Syntax. 0011 << 1 is 0110 0011 << 2 is 1100 0011 << 3 is 1000. In 12 operations, this code computes the next highest power of 2 for a 32-bit integer. Live Demo These operators cause the bits in the left operand to be shifted left or right by the number of positions specified by the right operand. If we wanted to shift it to the left 2 places, we'd end up with 00100000; everything is moved to the left two places, and zeros are added as padding. 4 >> 1 = 2 6 >> 1 = 3 5 >> 1 = 2 16 >> 4 = 1 Left and right are two shift operators provided by 'C' which are represented as follows: Operand << n (Left Shift) Operand >> n (Right Shift) The ^ (bitwise XOR) in C or C++ takes two numbers as operands and does XOR on every bit of two numbers. A program that demonstrates multiplication of a number by 2 using bitwise operators is given as follows. The left operands value is moved left by the number of bits specified by the right operand. There are two bit shift operators in C++: the left shift operator << and the right shift operator >>. A >> 2 = 15 i.e., 0000 1111 New bits shifted in from the right side receive the value 0. Checking if given 32 bit integer is power of 2: This can be replaced with a left shift and an xor if the shift is wider than the number of bits you want to add, easy example is (i<<1)^1, which adds one to a doubled value. The result of XOR is 1 if the two bits are different. This does not of course apply to a right shift (power of two divide) because only a left (little endian) shift fills the gap with zeros. A << 2 = 240 i.e., 1111 0000 >> Binary Right Shift Operator. This is the number 32 -- in fact, left shifting is the equivalent of multiplying by a power of two. This results in double the previous number. More on bitwise math may be found here. int mult_by_pow_2(int number, int power) { return number<> number_of_bits … 1 << 4 = 16 = 2 4 … 1 << n = 2 n. Right Shift ( >> ): Right shift operator is a binary operator which shift the some number of bits, in the given bit pattern, to the right and append 1 at the end. Bits that are shifted off the end of the binary number … So when we say x 1, we are saying "shift the bits in the variable x left by 1 place". The result may be expressed by the formula 1U << (lg(v - 1) + 1). Let n be the position of the leftmost 1 bit if x. 2. In other words, the carry propagates all the way to position n. So what happens is … Binary Left Shift Operator. In the bit shift version the key instruction is shll $2, %eax which is a shift left logical - there's the divide, and everything else is just moving values around. The left operands value is moved right by the number of bits specified by the right operand. When 1 is added to ~x, all positions below n become 0 and the 0 at position n becomes 1. The bitwise shift operators are used to move/shift the bit patterns either to the left or right side.