Bitwise Operations

Most programming languages ​​support the following bitwise operations (note that the following numbers are all in binary):

Symbol

Description

&

Perform an AND operation on the corresponding bits of two numbers. The result is 1 if and only if both binary bits are 1.

i.e. 11010 & 1 = 0

|

Perform an OR operation on the corresponding bits of two numbers. When any binary bit is 1, the result is 1.

i.e. 11010 | 1 = 11011

^

Perform an XOR operation on the corresponding bits of two numbers. When the two binary bits are different (one is 1 and the other is 0), the result is 1.

i.e. 11010 ^ 1 = 11011

>>

Shifts the bits of a number right by the specified number of bits, filling the left side with the sign bit of the number (for signed integers).

<<

Shifts the binary digits of a number to the left by the specified number of bits and fills the right side with 0s.

~

Perform a "reverse" operation on each bit of a number, changing 0 to 1 and 1 to 0.

i.e. ~11010 = 00101

Low bit

x & ~x is defined as low bit which can be use to find next closest power of 2. Always be used in Binary Index Tree

Bit Counter