为什么1 << 3等于8而不是6?

这个问题在这里已经有了答案:

  • 什么是位移(位移)操作符,它们是如何工作的? 8个答案

  • 向左移动一个数字相当于将该数字乘以2n,其中n是您移动该数字的距离。

    为了看看真实情况如何让我们举一个例子,假设我们有数字5所以我们将它向左移2位,二进制中的500000101

    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 << 3b00000001 << 3b00001000 →23→8

    如果你反而做了这个3 << 1那么

    3 << 1b00000011 << 1b00000110 →22 + 21→4 + 2→6


    1在二进制中是0000 0001

    通过左移3位(即1 << 3 )即可

    0000 1000
    

    这是十进制8,而不是6。


    因为两个三的力量是八。

    链接地址: http://www.djcxy.com/p/12569.html

    上一篇: Why is 1 << 3 equal to 8 and not 6?

    下一篇: What does typedef enum syntax like '1 << 0' mean?