Beetwise

Left shift

A left shift moves every bit to a higher position.

The empty low positions fill with 0.

A shift of one position multiplies the value by 2.

Try it

The result of 1 shifted left by 4 positions. Select a bit to change it. Change the bit width or the signed mode to see the effect.

Name or expression
ID0
Binary
0b
Hex
0x
Decimal
ASCII
·
Shift
Sign
Bits
Endian
7
6
5
4
3
2
1
0

Worked example

Shift 1 left by four positions:

  1. Write the value: 00000001.
  2. Move every bit four positions to the left.
  3. Fill the four low positions with 0.
  4. The result is 00010000, which is 16.

Where this is used

The expression 1 << n gives a mask with only bit n set. This is the most common use.

A left shift places a field at the correct bit position before an OR.

A shift is cheaper than a multiplication on a processor without a multiplier.

Points to note

  • The register drops a bit that moves past the top. A shift back does not restore it.
  • A left shift of 1 by 8 positions gives 0 in an 8-bit register, not 256.
  • A shift by a number of positions equal to or larger than the bit width gives undefined behaviour in C.

The full tool

The full editor holds many values at the same time. It also evaluates expressions across them, and it reads live values from a serial port.

Open the full editor

Questions

What is 1 shifted left by 4?
The result is 16. The single set bit moves from position 0 to position 4.
Is a left shift a multiplication by two?
Yes, for each position, until the register drops a bit at the top.
Why do drivers write 1 << n?
The expression builds the mask for bit n without a table of constants.