正數(shù)反碼:與原碼相同
負數(shù)反碼:符號位為“1”,數(shù)值位按位 取反。
正數(shù)補碼:與原碼相同
負數(shù)補碼:求反加一
記住:
所有參與運算的都是以補碼形式進行的 結果也是補碼 因此也需要將補碼轉(zhuǎn)換成為原碼的形式存在
下面就以一個例子進行講解:
負二 異或 三等于多少?(-2 ^ 3) = ?
那么怎么轉(zhuǎn)換成位補碼呢?
1.如果是負數(shù)的情況,那么將需要進行轉(zhuǎn)換
負數(shù)的補碼:符號位為1,其余位為該數(shù)絕對值的原碼按位取反;然后再加1。
如:-2
源碼:1000 0000 0000 0010 (負數(shù),最高為是1)
反碼:1111 1111 1111 1101 (按位取反)
補碼:1111 1111 1111 1110 (加一)
2.如果是正數(shù),那么原碼和補碼一樣
3的補碼:
0000 0000 0000 0011
所以-2^3 =
1111 1111 1111 1110
^ 0000 0000 0000 0011
= 1111 1111 1111 1101
因為結果也是補碼,所以必須要轉(zhuǎn)換成為原碼
分為兩種情況:
1.如果最高為為1 即為負數(shù) 那么最高位不變 其他按位取反,
最后加一 和前邊補碼轉(zhuǎn)原碼是一樣的
2.最高為是0,不用轉(zhuǎn)化
===============此題的結果為:-3
其他的運算都是類似的 注意:
所有參與運算的都是以補碼形式進行的結果也是補碼 因此也需要將補碼轉(zhuǎn)換成為原碼的形式存在
按位非(~)
我們直接進入主題,查看~-5的運算原理圖,從而得出按位非的運算規(guī)律:

從圖不難看出,原碼 --取反-> 反碼 --加1-> 補碼 --取反-> 按位非值;那如果是正數(shù)按位非呢,反推估計就行了的!
得出的口訣就是(不知道對不對,也沒驗證):數(shù)值(正數(shù)、負數(shù))加1取反;如-5按位非:-5 + 1為-4,取反為4;6按位非:6+1為7,取反為-7;
轉(zhuǎn)自:https://blog.csdn.net/qq506124204/article/details/7521996
https://blog.csdn.net/cyb_23/article/details/41863689