为什么1 << 3等于8而不是6?
这个问题在这里已经有了答案:
向左移动一个数字相当于将该数字乘以2n,其中n
是您移动该数字的距离。
为了看看真实情况如何让我们举一个例子,假设我们有数字5
所以我们将它向左移2
位,二进制中的5
是00000101
即
0×27 + 0×26 + 0×25 + 0×24 + 0×23 + 1×22 + 0×21 + 1×20 = 1×22 + 1×20 = 4 + 1 = 5
现在, 5 << 2
将是00010100
即
0×27 + 0×26 + 0×25 + 1×24 + 0×23 + 1×22 + 0×21 + 0×20 = 1×24 + 1×22 = 16 + 4 = 20
但是我们可以写1×24 + 1×22
1×24 + 1×22 =(1×22 + 1×20)×22 = 5×4→20
并且由此可以得出5 << 2
等于5×22的结论,可以证明一般情况下
k << m = k×2m
所以在你的情况下, 1 << 3
相当于23 = 8,因为
1 << 3
→ b00000001 << 3
→ b00001000
→23→8
如果你反而做了这个3 << 1
那么
3 << 1
→ b00000011 << 1
→ b00000110
→22 + 21→4 + 2→6
1在二进制中是0000 0001
通过左移3位(即1 << 3
)即可
0000 1000
这是十进制8,而不是6。
因为两个三的力量是八。
链接地址: http://www.djcxy.com/p/12569.html