1. 程式人生 > >十進位制負數轉換為二進位制、八進位制、十六進位制

十進位制負數轉換為二進位制、八進位制、十六進位制

直接進入主題....

問題:-3如何轉換成二進位制?

首先我們將+3轉換成二進位制,假設是為int型別(32位)的,那麼二進位制表示為:

0000 0000 0000 0000 0000 0000 0000 0011                           --這稱之為原碼:一個整數的絕對值的二進位制表示稱之為原碼。

負數轉換成二進位制分為3步:

1、首先將負數轉換為對應的原碼

-3的原碼為(也就是+3轉換成二進位制後的字串):

0000 0000 0000 0000 0000 0000 0000 0011 

2、再將原碼的每一位做取反操作得到反碼。   取反操作:0變為1     1變為0;  取反後的結果即為:

1111 1111 1111 1111 1111 1111 1111 1100

3、將反碼+1得到補碼

1111 1111 1111 1111 1111 1111 1111 1101

現在用windows自帶的計算器來驗證一下,Win+R 輸入calc,將計算器改為程式設計師,選擇雙字(4位元組,32位)


-3的十進位制以及二進位制表示:


負數轉換成八進位制、十六進位制,只需在補碼(二進位制)的基礎上,3位合成一位計算,或者4位合成一位計算

-3的轉換成二進位制為:

1111 1111 1111 1111 1111 1111 1111 1101

八進位制則將-3的二進位制從右至左每3位為一個單元,不夠三位用0補 即:

011 111 111 111 111 111 111 111 111 111 101

計算每一個單元,結果為:37777777775

十六進位制則將-3的二進位制從右至左每4位合併為一個單元,即:

1111 1111 1111 1111 1111 1111 1111 1101

計算後為: FFFFFFFD