#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 は 2 進数なので、答えは明らかです。 ~0 の結果は 1、0b11 は 1 と AND 演算され、結果は変化しないため、0b11 の 10 進数の結果は 3 になります。コード>。
0b11
~0
0b11 は実際にはバイナリ リテラルです。 ただし、これは gcc 拡張機能であり、vc++ を使用する場合は 2015 プレビューでのみ使用できます。
環境が 32 ビットで、int が 4 バイトであると仮定します。 0 は
00000000 00000000 00000000 00000000
、'~' ビットごとの反転に相当し、11111111 11111111 11111111 11111111
さらに
が得られます。 > 0b11
とは何ですか? このように書かれているのを見たことがありません。~ はビットごとの反転だからです。すべて 0 の場合、または否定された場合は、すべて 1 になります。
0b11
は 2 進数なので、答えは明らかです。~0
の結果は 1、0b11
は 1 と AND 演算され、結果は変化しないため、0b11
の 10 進数の結果は 3 になります。コード>。0b11
は実際にはバイナリ リテラルです。ただし、これは gcc 拡張機能であり、vc++ を使用する場合は 2015 プレビューでのみ使用できます。