電腦機器數的三種表示法是原碼、反碼和補碼。將數的真值形式中“ ”號以“0”表示,“-”號用“1”表示時,叫做數的原碼形式。為了克服原碼運算的缺點,採用機器數的反碼和補碼表示法;對正數來說其反碼和原碼的形式相同,對負數來說反碼為其原碼的數值部分各位變反。補碼是根據同餘的概念引入的,在電腦系統中,數值一律用補碼來表示和儲存。
本教學操作環境:windows7系統、Dell G3電腦。
電腦機器數的三種表示法是原碼、反碼、補碼。
機器數介紹
機器數是將符號"數位化"的數,是數字在電腦中的二進位表示形式。機器數有2個特點:一是符號數位化,二是其數的大小受機器字長的限制。
機器數有兩個基本特點:
1、數的符號數值化。實用的資料有正數和負數,由於電腦內部的硬體只能表示兩種物理狀態(用0和1表示),因此實用資料的正號“ ”或負號“-”,在機器裡就用一位二進制的0或1來區別。通常這個符號放在二進制數的最高位,稱符號位,以0代表符號“ ”,以1代表符號“-”。因為有符號佔據一位,數的形式值就不等於真正的數值,而帶符號位的機器數所對應的數值稱為機器數的真值。例如二進位真值數-011011,它的機器數為 1011011。
2、二進位的位數受機器設備的限制。機器內部設備一次能表示的二進制位數叫機器的字長,一台機器的字長是固定的。字長8位元叫一個位元組(Byte),機器字長一般都是位元組的整數倍,如位元長8位元、16位元、32位元、64位元。
機器數的形式
1、原碼
#將數的真值形式中「 」號以「0」表示,「- 」號用「1」表示時,叫做數的原碼形式,簡稱原碼。若字長為n位,原碼一般可表示為:
當X為正數時[X]原和X一樣,即[X]原 = X。當X為負數時 。由於X本身是負數,所以,實際上是將∣X∣數值部分絕對值前面的符號位上寫成「1」即可。
原碼表示法比較直觀,它的數值部分就是該數的絕對值,而且與真值、十進制數的轉換十分方便。但是它的加減法運算較複雜。當兩數相加時,機器要先判斷兩數的符號是否相同,若相同則兩數相加,若符號不同,則兩數相減。在做減法前,還要判斷兩數絕對值的大小,然後用大數減去小數,最後再確定差的符號,換言之,用這樣一種直接的形式進行加運算時,負數的符號位不能與其數值部分一道參加運算,而必須利用單獨的線路確定和的符號位。要實現這些操作,電路就很複雜,這顯然是不經濟實用的。為了減少設備,解決機器內負數的符號位元參加運算的問題,總是將減法運算變成加法運算,也就引進了反碼和補碼這兩種機器數。
2、反碼
如前所述,為了克服原碼運算的缺點,採用機器數的反碼和補碼表示法。即對正數來說,其反碼和原碼的形式相同;對負數來說,反碼為其原碼的數值部分各位變反。
3、補碼
補碼是根據同餘的概念引入的,我們來看一個減法透過加法來實現的例子。假定目前時間為北京時間6點整,有一隻手錶卻是8點整,比北京時間快了2小時,校準的方法有兩種,一種是倒撥2小時,一種是正撥10小時。若規定倒撥是做減法,正撥是做加法,那麼對手錶來講減2與加10是等價的,也就是說減2可以用加10來實現。這是因為8加10等於18,然而手錶最大隻能指示12,當大於12時12自然遺失,18減去12就只剩6了。這說明減法在某個條件下,是可以用加法來取代的。這裡“12”稱為“模”,10稱為“-2”對模12的補數。推廣到一般則有:
A – B = A ( – B M ) = A ( – B )補
可見,在模為M的條件下,A減去B,可以用A加上-B的補數來實現。這裡模(module)可視為計數器的容量,上述手錶的例子,模數為12。在計算機中其部件都有固定的位數,若位數為n,則計數值為,亦即計數器容量為,因此計算機中的補碼是以“ ”為模,其定義如下:
簡言之,對正數來說,其補碼和原碼的形式相同;而從(3)式和(4)式可以看出,對於負數,補碼為其反碼的末位加1。
總之,正數的原碼、反碼和補碼是完全相同的;負數的原碼、反碼和補碼其形式各不相同。另外,特別要注意的是,對於負數的反碼和補碼(即符號位為1的數),其符號位後邊的幾位數表示的並不是此數的數值。如果要知道此數的大小,一定要求其反碼或補碼才行。
推薦:《程式設計影片》
以上是計算機機器數的三種表示法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!