为什么在Python中3<<1等于6?

11 投票
4 回答
2245 浏览
提问于 2025-04-16 05:23

可能重复的问题:
绝对初学者的位移操作指南?

有人能给我解释一下这个操作符 << 或 >> 吗?

4 个回答

15

数字3在二进制中是11,如果把它向左移动一位,就变成了110,也就是十进制的6。

可以把a << b理解为a * (2 ** b),也就是把a乘以2的b次方。

>>是用来向右移动的。可以把a >> b理解为a // (2 ** b),也就是把a除以2的b次方。

34

<<>> 是位移运算符。简单来说,x << 1 会把 x 中的所有位向左移动一位,这样就相当于把这个数乘以2。更一般地说,x << n 会把位向左移动 n 位。要理解这个操作,最简单的方法是看看 二进制 表示法:

3         0000011 =  3
3 << 1    0000110 =  6
3 << 2    0001100 = 12
3 << 3    0011000 = 24

同样,>> 运算符则是把位向右移动:

58        0111010 = 58
58 >> 1   0011101 = 29
58 >> 2   0001110 = 14
58 >> 3   0000111 = 7
58 >> 4   0000011 = 3
58 >> 5   0000001 = 1
58 >> 6   0000000 = 0

撰写回答