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  }