整型數制徹底說明

我們經常在程序中接觸十進制、二進制、十六進制、八進制,還有原碼、補碼、反碼、階碼,以及真值等。究竟這些都是一些什麼東西,有什麼關係?書上個說紛紜,我拍個磚,歡迎指正!!

 

數制:二進制——X進制(X爲大於2的任意整數)。

 ps:目前不弄的很複雜,X很大到底是多大我們不管,這些問題留個數學專業的人,姑且認爲是一個很大的數,如10000 。

我這樣認爲:每種數制的一個表示對應着一個唯一的意義。

數制的表示就是:原碼、反碼、補碼、階碼等。

數制對應的唯一的意義就是:它的 真值。

注:關於ISBN爲7-03-014622-0的書的第10頁說明:把用“+”、“-”號表示數的符號的數據表示形式稱爲真值。

 

如下面這幅圖片:

(圖片1)

圖片1對應的意義(客觀現象)【用10進制來描述】:12個長方形 、 4個菱形、 24個箭頭線。

 

對圖下面這一副圖片:

(圖片2)

圖片2對應的意義(客觀現象)【用10進制來描述】:9個長方形、 1個菱形、 13個箭頭線。

 

現在問題來了:對於我們說的(如:12個長方形)這個”12“是什麼?是真值?原碼?補碼?反碼?階碼?

我的回答是:真值只是一種意義,一種客觀現象的描述或是一個客觀過程的描述(就是說是真值代表一種事實),而寫出來的數字(無論什麼進制),都應該是它的某種編碼!

所以,上面的12、4、24、9、1、13都是十進制的某種編碼。那麼,是什麼編碼呢?原碼 or 補碼 or 反碼?都不是!!!

那是什麼??!!

我的回答是:是被人們簡化的真值(一般人們不寫這個“+”)。

數字由兩部分構成: 符號 + 數值。

對於符號部分:在生活中,符號用+、-表示;而在計算機中,符號由對應進制的某兩個數表示(注:不一定是0、1!)。

對於數值部分:在生活中,就是10進制最直觀的數(我們一看就知道是什麼的數字),而在計算機中,是計算機依賴的那種數制體系表示的。

如果這個計算機是依賴10進制的,那麼某個數的10進制原碼就是這個數真值最直觀的描述!——僅僅改變了符號位的表示方式(-、+變成9、0)!

 

所以我們經常說的數制的轉換,應該這樣準確的指明:數A是a進制的x碼,將它轉換成b進制,並且用b進制的y碼錶示。

 

如果有從A進制的X碼到B進制的Y碼的直接轉換公式就OK了,所有的轉換都不再有任何的問題,但。。。

 

但是這不要太困難哦,多項式替代法可以完成任意進制之間的轉換,但是當目標進制不是10進制的時候,轉換非常的複雜。所以,進制之間的轉換應該是下面這樣一個過程:

 

 

 

 

像上面這個例子:0XFFEE是被當作16進制的真值來處理的,最後也轉換成了8進制的真值(沒有寫“+”)。

如果上面的0XFFEE是當作C語言裏的short處理,如short i = 0XFFEE;那麼i所代表的值就不是這個65518了,而是-18 。這就是因爲我們看到一個數的時候,首先要確定它是什麼進制的什麼碼的表示形式。

 

ps:改天完成一個進制轉換的程序。只考慮常用的這四種進制。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章