#include <iostream> using namespace std; int main() { cout << (0b11 & (~0)) << endl; getchar(); return 0; }
为什么上面这个代码输出结果是3?就是想问为什么~0可以得到全是1的掩码,为什么不是只有一个1,像这样0000000000000000000001。
~0
学习是最好的投资!
假設你的環境是32位,int為4位元組。 0等價於00000000 00000000 00000000 00000000,'~'按位取反,得到11111111 11111111 11111111 11111111 另外0b11是什麼,這種寫法好像沒見過?
00000000 00000000 00000000 00000000
11111111 11111111 11111111 11111111
0b11
因為~就是按位取反。全是0每個都取反就都是1
既然0b11是二進制數,那麼答案就很明顯了。 ~0的結果是1,0b11和1進行與運算,結果不變,因此結果是0b11的十進位結果3。
~0
0b11其實是binary literal。 但這個是gcc extension,vc++的話 2015 Preview 才可以用。
假設你的環境是32位,int為4位元組。 0等價於
00000000 00000000 00000000 00000000
,'~'按位取反,得到11111111 11111111 11111111 11111111
另外
0b11
是什麼,這種寫法好像沒見過?因為~就是按位取反。全是0每個都取反就都是1
既然
0b11
是二進制數,那麼答案就很明顯了。~0
的結果是1,0b11
和1進行與運算,結果不變,因此結果是0b11
的十進位結果3。0b11
其實是binary literal。但這個是gcc extension,vc++的話 2015 Preview 才可以用。