我有以下位移:
1011 & (~0 << 2)
我如何解决这个问题?特别是我对〜0&lt;&lt; 2表示 - 我知道&lt;&lt;运算符有点偏移,而且〜表示不是&#39;。
我所读到的是〜0是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
最后,您只需要在1011
和1100
之间进行按位,最后为
1000 = 8