如何解释这个位移

时间:2015-01-10 05:14:46

标签: bit-manipulation

我有以下位移:

1011 & (~0 << 2)

我如何解决这个问题?特别是我对〜0&lt;&lt; 2表示 - 我知道&lt;&lt;运算符有点偏移,而且〜表示不是&#39;。

我所读到的是〜0是1的序列 - 但是怎么回事?有多少1?

1 个答案:

答案 0 :(得分:3)

通常,int是32位/ 4字节值。所以~0 = 1111 1111 1111 1111 1111 1111 1111 1111

在你的情况下,这无关紧要。

您想解决1011 & (~0 << 2)

让我们逐步完成您的示例。

首先发生的是括号:

(~0 << 2) 

这是向左移位两位的位1111。当发生提升换档时,新添加的位为0。因此(~0 << 2)等于:

(1111 << 2) = 1100

最后,您只需要在10111100之间进行按位,最后为

1000 = 8