github.com/tunabay/go-bitarray@v1.3.1/bitarray_bitwise_example_test.go (about) 1 // Copyright (c) 2021 Hirotsuna Mizuno. All rights reserved. 2 // Use of this source code is governed by the MIT license that can be found in 3 // the LICENSE file. 4 5 package bitarray_test 6 7 import ( 8 "fmt" 9 10 "github.com/tunabay/go-bitarray" 11 ) 12 13 func ExampleBitArray_LeadingZeros() { 14 ba1 := bitarray.MustParse("1000-0111 0100") 15 ba2 := bitarray.MustParse("0000-0000 0000-1100 0110-1") 16 ba3 := bitarray.MustParse("0000-0") 17 18 fmt.Println(ba1.LeadingZeros()) 19 fmt.Println(ba2.LeadingZeros()) 20 fmt.Println(ba3.LeadingZeros()) 21 22 // Output: 23 // 0 24 // 12 25 // 5 26 } 27 28 func ExampleBitArray_TrailingZeros() { 29 ba1 := bitarray.MustParse("1100-1111 1100-0000 0000-0") 30 ba2 := bitarray.MustParse("0000-0001 1111") 31 ba3 := bitarray.MustParse("000") 32 33 fmt.Println(ba1.TrailingZeros()) 34 fmt.Println(ba2.TrailingZeros()) 35 fmt.Println(ba3.TrailingZeros()) 36 37 // Output: 38 // 11 39 // 0 40 // 3 41 } 42 43 func ExampleBitArray_OnesCount() { 44 ba1 := bitarray.MustParse("1100-1100 11") 45 ba2 := bitarray.MustParse("0000-0000 0000-10") 46 ba3 := bitarray.MustParse("0000") 47 fmt.Println(ba1.OnesCount()) 48 fmt.Println(ba2.OnesCount()) 49 fmt.Println(ba3.OnesCount()) 50 51 // Output: 52 // 6 53 // 1 54 // 0 55 } 56 57 func ExampleBitArray_And() { 58 ba1 := bitarray.MustParse("1111-0000 0011-01") 59 ba2 := bitarray.MustParse("1010-1010 1010-10") 60 fmt.Printf("% b\n", ba1.And(ba2)) 61 62 // Output: 63 // 10100000 001000 64 } 65 66 func ExampleBitArray_Or() { 67 ba1 := bitarray.MustParse("1111-0000 0011-01") 68 ba2 := bitarray.MustParse("1010-1010 1010-10") 69 fmt.Printf("% b\n", ba1.Or(ba2)) 70 71 // Output: 72 // 11111010 101111 73 } 74 75 func ExampleBitArray_Xor() { 76 ba1 := bitarray.MustParse("1111-0000 0011-01") 77 ba2 := bitarray.MustParse("1010-1010 1010-10") 78 fmt.Printf("% b\n", ba1.Xor(ba2)) 79 80 // Output: 81 // 01011010 100111 82 } 83 84 func ExampleBitArray_Not() { 85 ba := bitarray.MustParse("1111-0000 1010") 86 fmt.Printf("% b\n", ba.Not()) 87 88 // Output: 89 // 00001111 0101 90 } 91 92 func ExampleBitArray_AndAt() { 93 ba1 := bitarray.MustParse("1010-1010 1010-1010 10") 94 ba2 := bitarray.MustParse("1111-0000") 95 fmt.Printf("% b\n", ba1.AndAt(0, ba2)) 96 fmt.Printf("% b\n", ba1.AndAt(4, ba2)) 97 fmt.Printf("% b\n", ba1.AndAt(10, ba2)) 98 99 // Output: 100 // 10100000 10101010 10 101 // 10101010 00001010 10 102 // 10101010 10101000 00 103 } 104 105 func ExampleBitArray_OrAt() { 106 ba1 := bitarray.MustParse("1010-1010 1010-1010 10") 107 ba2 := bitarray.MustParse("1111-0000") 108 fmt.Printf("% b\n", ba1.OrAt(0, ba2)) 109 fmt.Printf("% b\n", ba1.OrAt(4, ba2)) 110 fmt.Printf("% b\n", ba1.OrAt(10, ba2)) 111 112 // Output: 113 // 11111010 10101010 10 114 // 10101111 10101010 10 115 // 10101010 10111110 10 116 } 117 118 func ExampleBitArray_XorAt() { 119 ba1 := bitarray.MustParse("1010-1010 1010-1010 10") 120 ba2 := bitarray.MustParse("1111-0000") 121 fmt.Printf("% b\n", ba1.XorAt(0, ba2)) 122 fmt.Printf("% b\n", ba1.XorAt(4, ba2)) 123 fmt.Printf("% b\n", ba1.XorAt(10, ba2)) 124 125 // Output: 126 // 01011010 10101010 10 127 // 10100101 10101010 10 128 // 10101010 10010110 10 129 }