Bit Shifting

In short: A bit shift moves every bit in a number's binary representation left or right by a set number of places. A left shift by one multiplies the number by 2; a right shift by one divides it by 2, discarding any remainder.

A bit shift moves each digit in a number's binary representation left or right. There are three main types of shifts:

Left Shifts

When shifting left, the most-significant bit is lost, and a 0 bit is inserted on the other end.

The left shift operator is usually written as "<<".

0010 << 1 → 0100 0010 << 2 → 1000

A single left shift multiplies a binary number by 2:

0010 << 1 → 0100 0010 is 2 0100 is 4

Logical Right Shifts

When shifting right with a logical right shift, the least-significant bit is lost and a 0 is inserted on the other end.

1011 >> 1 → 0101 1011 >> 3 → 0001

For positive numbers, a single logical right shift divides a number by 2, throwing out any remainders.

0101 >> 1 → 0010 0101 is 5 0010 is 2

Arithmetic Right Shifts

When shifting right with an arithmetic right shift, the least-significant bit is lost and the most-significant bit is copied.

Languages handle arithmetic and logical right shifting in different ways. Python's right shift operator (>>) always does arithmetic right shifting.

1011 >> 1 → 1101 1011 >> 3 → 1111 0011 >> 1 → 0001 0011 >> 2 → 0000

The first two numbers had a 1 as the most significant bit, so more 1's were inserted during the shift. The last two numbers had a 0 as the most significant bit, so the shift inserted more 0's.

If a number is encoded using two's complement, then an arithmetic right shift preserves the number's sign, while a logical right shift makes the number positive.

# Arithmetic shift 1011 >> 1 → 1101 1011 is -5 1101 is -3 # Logical shift # (Not a thing in Python, but if it were:) 1111 >> 1 → 0111 1111 is -1 0111 is 7

Frequently Asked Questions

What does bit shifting do?

Bit shifting moves the bits in a number left or right. The '<<' operator shifts left (filling with zeros) and '>>' shifts right. Each left shift by one doubles the value; each right shift by one halves it.

What's the difference between a left shift and a right shift?

A left shift (<<) moves bits toward the most significant end and multiplies by powers of two; a right shift (>>) moves bits toward the least significant end and divides by powers of two.

What is bit shifting used for?

Fast multiplication and division by powers of two, packing several values into one integer, building bitmasks, and low-level work like hashing and graphics.

Last updated: June 17, 2026

What's next?

If you're ready to start applying these concepts to some problems, check out our mock coding interview questions.

They mimic a real interview by offering hints when you're stuck or you're missing an optimization.

Try some questions now

. . .