Binary Operator Hack and Tricks

1 min read Tweet this post

Binary operator is a way to manipulate binary data. We already know there are &, |, ^, << and >> operators, but not all of us know the secret of each operators. Let’s explore what tricks behind those operator using go language.

We already know how multiply 2 using * 2 or divide using / 2, but how we can achieve same with binary operator?

divide by 2shift right by 1someNumber >> 1
multiply by 2shift left by 1someNumber << 1
    // multiply by 2
	fmt.Println(4 << 1)
    // Output: 8

    // divide by 2
    fmt.Println(4 >> 1)
	// Output: 2

| | | | | ------------------- | ------------------------- | ------------ | ---- | ---- | | change to uppercase | use & with underscore | 'c' & '_' | | change to lowercase | use |withspace | 'A' | ' ' |


    // to upper case char
	fmt.Println((string)('c' & '_'))
	// Output: C

    // to lower case char
	fmt.Println(string('A' | ' '))
	// Output: a

Invert char can be achieved by xor with space

	fmt.Println(string('A' ^ ' '), string('b' ^ ' '))
	// Output: a B

Get letter’s position in alphabet (1-26) using and with 31

	fmt.Println('z' & 31)
	// Output: 26

Simple check if number is odd/even using and with 1, odd number will return true

    // odd number return true
    fmt.Println(7 & 1 > 0)
    // Output: true

    // even number return false
    fmt.Println(8 & 1 > 0)
	// Output: false

Try it yourself at https://play.golang.org/p/-wsIlDgBTmF

programming go golang101