84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
#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 才可以用。