位非
從 YFRobotwiki
在C++中,按位取反用符號"~"表示。不像按位與(&)和按位或(|),按位取反(^)用於單個操作數,用來改變操作數上每一位的值,將0變為1,或將1變為0。比如:
0 1 运算数1 ------ 1 0 运算数1取反
16位的用法相同。如下:
int a = 103; // 二进制: 0000000001100111 int b = ~a; // 二进制: 1111111110011000 = -104
看到此操作的結果為一個負數:-104,你可能會感到驚訝。這是因為整型變量的最高位,所謂的符號位。如果最高位為1,該整數為負數。正數和負數的編碼被稱為二進制補碼。想了解更多信息,請參閱維基百科條目:補碼。
順便說一句,需要注意的是,對於任何整數x,其~x和-x-1的值相等。有時候,對帶有符號的整數型操作數進行位操作可能造成一些不必要的情況。
更多建議和問題歡迎反饋至 YFRobot論壇