为什么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