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
ASCII
·
Binary
0b
0b00010000
Hex
0x
0x10
Decimal
16
Shift
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:
- Write the value: 00000001.
- Move every bit four positions to the left.
- Fill the four low positions with 0.
- 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 editorQuestions
- 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.