帶符號異或運算

2022-02-16 09:13:52 字數 366 閱讀 7711

-1 ^ -1 << 5

第一步 -1 << 5

-1 << 5

1000 0001 << 5

1010 0000

第二步 -1 ^ 1010 0000

1000 0001 原碼 ^ 1010 0000 原碼

負數異或需要用補碼

1111 1110 反碼 ^ 1101 1111 反碼

1111 1111 補碼 ^ 1110 0000 補碼 = 0001 1111

結果為正數,所以結果為1+2+4+8+16=31

結果如果為負數,需要結果-1,再取反(由 原碼 -> 取反 -> +1 補碼 得 補碼 -1 -> 取反 -> 原碼)

參考:

異或運算 有趣的異或運算

異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...

(與運算) (或運算) (異或運算)

即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...

與運算( ) 或運算( ) 異或運算( )

預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 運算規則 0 0 0 0 1 1 ...