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