在阅读Gayle Laakmann McDowell的《破解编码采访》一书的比特操作一章时,它提出了一个问题:
找到的值(假设数字由4位表示):
1011 & (~0 << 2)
现在,~0=1,向左移动两次,得到100(=0100,完成4位)。1011与0100的反比等于0000。
然而,我的答案是1000。
最佳答案
~0
不是1而是1111
(或0xf
)。~
运算符是按位的NOT运算符,而不是逻辑运算符(这将是!
)。
因此,当向左移动两个位置时,最后四位是1100
。而1100 & 1011
则是exacly1000
。