位非

從 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的值相等。有時候,對帶有符號的整數型操作數進行位操作可能造成一些不必要的情況。




返回Arduino語法參考列表

更多建議和問題歡迎反饋至 YFRobot論壇