負數與二進制轉換方法[轉載]

原文:https://www.jb51.net/article/34133.htm.net

--------------------------------------------------------htm

1.十進制負數轉二進制源碼

假設有一個int類型的數,值爲5,那麼,咱們知道它在計算機中表示爲:(由於Java中int是4個字節。二進制

因此高位須要補0,佔夠32位)計算機

00000000 00000000 00000000 00000101證書

如今想知道,-5在計算機中如何表示?數字

在計算機中,負數以原碼的補碼形式表達。ps

什麼是補碼呢?這得從原碼,反碼提及。

 

原碼:一個正數,按照絕對值大小轉換成的二進制數;一個負數按照絕對值的大小轉換成的二進制數,

而後最高位補1,稱爲源碼。

好比 00000000 00000000 00000000 00000101 是5的源碼;

        10000000 00000000 00000000 00000101是-5的源碼。

 

反碼:正數的反碼與源碼相同,負數的反碼爲對該數的源碼除符號位外各位取反。

取反操做指:原爲1,得0;原爲0,得1.(1變0;0變1)

好比:正數000000000 00000000 00000000 00000101 的反碼仍是

                  000000000 00000000 00000000 00000101;

         負數10000000 00000000 00000000 00000101每一位取反(除符號位),得

                11111111 11111111 11111111 11111010。

稱:10000000 00000000 00000000 00000101和11111111 11111111 11111111 11111010互爲反碼。

 

補碼:正數的補碼與源碼相同,負數的補碼爲對該數源碼除符號位外各位取反,而後在最後一位加1.

好比:10000000 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的源碼:10000000 00000000 00000000 00000001

2 得反碼:           11111111 11111111 11111111 11111110  (除符號位按位取反)

3 得補碼:           11111111 11111111 11111111 11111111

可見,-1在計算機裏用二進制表達就全是1.16進製爲:0xFFFFFF

===============================================================================

主要知識點:

①正數的反碼和補碼都與原碼相同。
②而負數的反碼爲對該數的原碼除符號位外各位取反。
③負數的補碼爲對該數的原碼除符號位外各位取反,而後在最後一位加1 

 ================================================================

下面是書上原文:

1)源碼錶示法規定:

用符號位和數值表示帶符號數,正數的符號位用「0」表示,負數的符號位用

「1」表示,數字部分用二進制形式表示。

2)反碼錶示法規定:證書的反碼與源碼相同,負數的反碼與該數的源碼除符號位外各位取反。

3)補碼錶示法規定:證書的補碼與源碼相同,負數的補碼爲對該數的源碼除符號位外各位取反,

而後在最後一位加1.

4)正0和負0的補碼相同,[+0]補=[-0]補=0000 0000B。

 

2.符號位爲1的二進制<即補碼>轉十進制負數

相信你們已經知道如何個轉法了,不過在此仍是說明一下。

1)除去符號位減1.

2)除去符號位,按位取反;結果就是負數的源碼;

3)源碼轉成相應的十進制。

 

例如:

-5在計算機中表達<-5的補碼>:
11111111 11111111 11111111 11111011

1>除去符號位減1:                                  11111111 11111111 11111111 11111010

2>除去符號位,按位取反<負數的源碼>: 10000000 00000000 00000000 00000101

3>源碼轉換成十進制數結果:                -                                                                5

     -------由於最高位爲1因此帶負號

相關文章
相關標籤/搜索