在阅读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

10-02 05:10