「反碼」,「取反」,「按位取反(~)」,這3個概念是不一樣的。
取反:0變1,1變0
反碼:正數的反碼是其本身,對於負數其符號位不變其它各位取反(0變1,1變0)
按位取反(~): 這將是下面要討論的。
要弄懂這個運算子的計算方法,首先必須明白二進位制數在記憶體中的存放形式,二進位制數在記憶體中是以補碼的形式存放的。
另外正數和負數的補碼不一樣,正數的補碼、反碼都是其本身,負數的反碼是符號位不變,其餘位取反,補碼是反碼加1,即:
正數11:
原碼:00001011
補碼:00001011
反碼:00001011
負數-12
原碼:11111100
反碼:11110011
補碼:11110100
對正數11按位取反
原碼:00001011
補碼:00001011
反碼:00001011
對補碼取反: 11110100
減1得反碼: 11110011
反碼取反: 11111100
對負數-12按位取反
原碼:11111100
反碼:11110011
補碼:11110100
對補碼取反: 00001011
對正數取反的口訣:補碼取反減1取反
對負數取反的口訣:原碼取反加1取反
規律:正數的取反等於正數加1取負 例如11的取反等於-12
負數的取反等於負數加1取正 例如-12的取反等於11
c 二進位制 負數 二進位制概念
我們平時認識的數字比如1 2 3 4等數字叫做十進位制數字,我們可以看懂,但是計算機無法運算,如果計算機要計算這些數字就得將這些數字轉換成計算機能讀懂的資料,計算只能讀懂二進位制數字,二進位制的數字有什麼特徵呢?二進位制就是由1和0組成的數字,那麼為什麼計算機要使用二進位制資料呢?下面作為了解。a ...
負數的二進位制
先舉個正確的例子 7的二進位制形式可以表示如下 00000000 00000000 00000000 00000111 7的二進位制形式可以表示如下 11111111 11111111 11111111 111110011 左邊為高位,右邊為低位 2 最高位為符號位,正數的符號位為0,負數的符號位為...
Java 負數的二進位制轉換問題
system.out.println 0b11110100 244想通過這行 列印輸出 12 12的補碼是11110100 結果列印結果是 244 結果分析 因為系統預設列印的是按照int型別輸出的,int型別有32位,如果不夠32位系統會自動在前面補0 system.out.println 0b1...