如何解释这个位移
How to interpret this bit shift
我有以下位移:
1011 & (~0 << 2)
我该如何计算出这个问题的答案?特别是我对 ~0 << 2 的含义感到困惑 - 我知道 << 运算符是一个移位,并且 ~ 代表 'not'.
我读到的是 ~0 是 1 的序列 - 但这是怎么回事,那里有多少个 1?
通常,int 是一个 32-bit/4-byte 值。所以 ~0
= 1111 1111 1111 1111 1111 1111 1111 1111
在你的情况下,这真的无关紧要。
你想解决1011 & (~0 << 2)
让我们逐步查看您的示例。
首先发生的是括号:
(~0 << 2)
这是1111位左移两位。当发生提升移位时,新添加的位为 0。因此 (~0 << 2)
等于:
(1111 << 2) = 1100
最后,您只需要在 1011
和 1100
之间按位进行运算,结果为
1000 = 8
我有以下位移:
1011 & (~0 << 2)
我该如何计算出这个问题的答案?特别是我对 ~0 << 2 的含义感到困惑 - 我知道 << 运算符是一个移位,并且 ~ 代表 'not'.
我读到的是 ~0 是 1 的序列 - 但这是怎么回事,那里有多少个 1?
通常,int 是一个 32-bit/4-byte 值。所以 ~0
= 1111 1111 1111 1111 1111 1111 1111 1111
在你的情况下,这真的无关紧要。
你想解决1011 & (~0 << 2)
让我们逐步查看您的示例。
首先发生的是括号:
(~0 << 2)
这是1111位左移两位。当发生提升移位时,新添加的位为 0。因此 (~0 << 2)
等于:
(1111 << 2) = 1100
最后,您只需要在 1011
和 1100
之间按位进行运算,结果为
1000 = 8