負數的二進位制表示方法
原碼:一個整數,按照絕對值大小轉換成的二進位制數,稱為原碼。
比如 00000000 00000000 00000000 00000101 是 5的 原碼。
反碼:將二進位制數按位取反,所得的新二進位制數稱為原二進位制數的反碼。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反碼。
反碼是相互的,所以也可稱:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互為反碼。
補碼:反碼加1稱為補碼。
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
比如:00000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。
那麼,補碼為:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011。轉換為十六進位制:0xFFFFFFFB。
再舉一例,我們來看整數-1在計算機中如何表示。
假設這也是一個int型別,那麼:
1、先取1的原碼:00000000 00000000 00000000 00000001
2、得反碼: 11111111 11111111 11111111 11111110
3、得補碼: 11111111 11111111 11111111 11111111
可見,-1在計算機裡用二進位制表達就是全1。16進製為:0xFFFFFF
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2220502/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 負數的二進位制數問題
- 負數補碼(16進位制轉10進位制的負數)
- java二進位制正數和負數取反Java
- 知多一點二進位制中的負數
- Java中8進位制和16進位制的表示方法Java
- 驗證二進位制數字正規表示式
- 二進位制轉十進位制快速方法
- JavaScript八進位制與二進位制表示法JavaScript
- JavaScript 八進位制與二進位制表示法JavaScript
- 浮點數的二進位制表示
- 二進位制轉十進位制快速轉換方法
- 二進位制中為什麼負數是正數取反再加一
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 輸出二進位制數
- (轉)【iOS 開發】二進位制、十進位制、十六進位制相互轉換的方法iOS
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- .C++整數的N進位制字串表示C++字串
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- JavaScript 二進位制數字轉換為十進位制JavaScript
- 對於十進位制數 -1023,包含符號位在內,至少需要多少個二進位制位表示該數符號
- 二進位制中1的個數
- 1417 二進位制數的大小
- 用C#實現二進位制的減法(包括二進位制小數)C#
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 二進位制與二進位制運算
- PHP負數轉16進位制再轉到10進位制的正確姿勢PHP
- 修改二進位制引數檔案(SPFILE)的方法之一
- JS操作二進位制方法 - blobJS
- 二進位制陣列 subarray() 方法陣列
- 進位制詳解:二進位制、八進位制和十六進位制
- javascript十進位制數字和二進位制相互轉換JavaScript
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- Go 釋出二進位制包的方法Go
- 有趣的二進位制3—浮點數
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出