機器數與碼制——如何在計算機內部存儲數字、進行數據運算

機器數

機器數

  各類數據在計算機內部的表示和存儲形式稱爲機器數。編碼

  特色:spa

  • 採用二進制計數;
  • 數的符號(正負)用「0、1」表示;
  • 小數點隱含表示二不佔位置。

機器數的真值

  機器數所對應的實際數值。 blog

機器數的分類

  無符號機器數和帶符號機器數。 io

無符號機器數(表示正數)

  無符號(無正負號)機器數表示正數,所有二進制位均表明數值,沒有符號位。table

  • 若約定小數點的位置在機器數的最低位以後,則是純整數(正整數)。
  • 若約定小數點的位置在機器數的最高位以前,則是純小數(正小數)。
  • 不能用原碼、反碼、補碼等編碼方法表示。

帶符號機器數(表示實數)

  帶符號機器數既能夠表示正數,也能夠表示負數。基礎

  最高位是符號位("0"表示「+」。「1」表示「-」),其他位表示數值。軟件

  • 若約定小數點的位置在機器數的最低位以後,則是純整數。
  • 若約定小數點的位置在機器數的最高位以前,則是純小數。
  • 可採用原碼、反碼、補碼等編碼方法表示。

碼制

  爲了運算方便,帶符號的機器數可採用原碼、反碼、補碼、移碼等不一樣的編碼方式表示。硬件

  這些編碼方法被稱爲碼制二進制

原碼錶示

規則:

  • 數值X的原碼記爲[X]
  • 機器字長爲n,即採用n個二進制位表示數據。
  • 最高位爲符號位,「0」表示正號,「1」表示負號。
  • 其他的n-1位表示數值的絕對值。
  • 對數「0」有「+0」和「- 0」兩種表示形式。
  • 對於機器字長爲n+1位的機器,原碼錶示法可表示的整型數值範圍爲:-2n+1 ≤ X ≤ 2n-1。
  • 當X ≥ 0時,[X] = 0X;  eg:[+7] = 00000111 (設機器字長爲8)。
  • 當X ≤ 0時,[X] = 1X;  eg:[- 7] = 10000111 (設機器字長爲8)。
  • [+0] = 00000000;
  • [- 0] = 10000000;

Example-1程序

    [+1] = 00000001;  [-1] = 10000001。

    [+127] = 01111111;  [-127] = 11111111。注:(127)D = (1111111)B。

    [+45] = 00101101;  [-45] = 10101101。 注:(45)D = (101101)B

反碼錶示

規則:

  • 數值X的反碼記爲[X]
  • 機器字長爲n,即採用n個二進制位表示數據。
  • 最高位爲符號位,「0」表示正號,「1」表示負號。
  • 其他的n-1位表示數值。
  • 對數「0」有「+0」和「-0」兩種表示形式。
  • 對於機器字長爲n+1位的機器,反碼錶示法可表示的整型數值範圍爲:-2n+1 ≤ X ≤ 2n-1。
  • 正數的反碼與原碼相同。即當X ≥ 0時,[X] = [X] = 0X。
  • 負數的反碼則是要將除符號位外的絕對值按位取反。
  • 當X ≥ 0時,[X] = X;  eg:[+7] [+7]00000111 (設機器字長爲8)。
  • 當X ≤ 0時,[X] = |X|;  eg:[- 7] = 11111000 (設機器字長爲8)。
  • [+0] = 00000000;
  • [- 0] = 11111111;

Example-1

    [+1] = 00000001;  [-1] = 11111110。

    [+127] = 01111111;  [-127] = 10000000。注:(127)D = (1111111)B。

    [+45] = 00101101;  [-45] = 11010010。 注:(45)D = (101101)B

補碼錶示

規則:

  • 數值X的補碼記爲[X]
  • 機器字長爲n,即採用n個二進制位表示數據。
  • 最高位爲符號位,「0」表示正號,「1」表示負號。
  • 其他的n-1位表示數值。
  • 對數「0」只有惟一的「0」一種表示形式。
  • [+0] = 00000000;
  • [- 0] = 00000000;
  • 對於機器字長爲n+1位的機器,反碼錶示法可表示的整型數值範圍爲:-2n ≤ X ≤ 2n-1。
  • 正數的補碼與其反碼和原碼相同。即當X ≥ 0時,[X] = [X] = [X] = 0X。
  • 負數的補碼則等於在其反碼的末尾加1(將其原碼除符號位外的其餘位按位取反後加1)。
  • 當X ≥ 0時,[X] = [X] = [X] = 0X;  eg:[+7] = [+7] = [+7]00000111 (設機器字長爲8)。
  • 當X < 0時,[X] = 1 |X| +1  eg:[- 7] = 11111001  [- 7]反 =  11111000(設機器字長爲8)。

Example-1

    [+1] = 00000001;  [- 1] = 11111110;  [- 1] = 11111111。

    [+127] = 01111111;  [- 127] = 10000000;  [- 127] = 10000001。注:(127)D = (1111111)B。

    [+45] = 00101101;  [- 45] = 11010010;  [- 45] = 11010011。 注:(45)D = (101101)B

補碼運算的優勢(功能)

  將減法運算變成加法運算(由於運算器中只有加法器)。

  例如計算96 - 20 = ?。

  96 -20 76
無符號位二進制表示 1100000 -10100 1001100
原碼 01100000 10010100 01001100
反碼 01100000 11101011 01001100
補碼 01100000 11101100 01001100

  將96-20轉換爲[96] + [-20],計算過程以下:

  最高位的進位1天然丟失。

補碼錶示的一個另外狀況(原碼、反碼錶示無此狀況)

  對於n位補碼錶示法,當符號位爲1而數值位所有爲0時,它表示整數 -2n-1,即此時符號位的1,既表示負數又表示數值。

  Eg:當機器字長爲8時,符號位爲1而數值位所有爲0爲數值 10000000,(10000000)B = (128)D = 28-1 = 27 = 128。且符號位還表示負號。

  因此[- 128]補 = 10000000。

補碼的另外一特色

  用補碼錶示時,因爲符號位和數值位一塊兒編碼,難以從補碼碼值形式判斷真值大小。如45 > - 45,然而,[45] = 00101101 < [- 45] = 11010011。

移碼(增碼)表示

  移碼(又叫增碼)是符號位取反的補碼,將補碼的符號位取反便可獲得移碼錶示;通常用作浮點數的階碼,引入的目的是爲了保證浮點數的機器零爲全0。

  採用移碼錶示時,碼值與真值大小成正比,碼值大者對應的真值也大。

規則:

  • 最高位爲符號位,「1」表示正號,「0」表示負號。
  • 機器字長爲n,即採用n個二進制位表示數據。
  • 當-2≤ X ≤ 2n時,[X] = 2n+X。

特色:

  • 保持了數據原有的大小順序,便於進行比較操做。

機器數的運算

機器數的加減運算

  在計算機中,能夠只設置加法器,而將減法運算轉換爲加法運算來實現。

原碼加、減法

  •  兩個符號相同的原碼數相加時,只需將數值部分直接相加,運算結果的符號與兩個加數的符號相同。
  • 若兩個加數的符號相異,則應進行減法運算。方法:先比較兩個數絕對值的大小,而後用絕對值大者的絕對值減去絕對值小者的絕對值,結果的符號取絕對值大者的符號。

  原碼錶示的機器數進行減法運算是很煩的,因此在計算機中的加、減法運算主要採用補碼錶示的機器數

補碼加、減法

   計算機中的加、減法運算通常用補碼來實現。

  在補碼錶示中,可將減法運算轉換成加法運算。

補碼加法:

  和的補碼等於補碼求和。  [X+Y] = [X]+[Y]

補碼減法:

  差的補碼等於被減數的補碼加上減數取負後的補碼。  [X-Y] = [X]+[-Y]

  • 由[X]求[-X]的方法:
  • 將[X]的各位取反(包括符號位),末尾加1。

總結:

  X±Y  [X+Y]=[X]+[±Y]

  Example-1:

    設二進制整數X = +1000100, Y = +1110,求X+YX-Y的值。

    

        設用8位補碼錶示帶符號機器數

        由於X和Y都是正數

        因此[X] = 01000100,[Y] = 00001110;

        

溢出及其斷定

 

機器數的乘除運算

  機器數的乘除法運算,一般有以下3種實現形式:

    1.純軟件方案。在只有加法器的低檔計算機中,沒有乘、除法指令,乘除運算使用程序來實現的。這種方案的硬件結構簡單,但做乘除法運算時速度緩慢。

    2.在現有的可以完成加減運算的算術邏輯單元ALU的基礎上,經過增長少許的左、右移位的邏輯電路,來實現乘除運算。與純軟件方案相比,這種方案增長硬件很少,而乘除法的運算速度有了較大提升。

    3.設置專用的硬件陣列乘法器(或除法器),完成乘除法運算。該方案需付出較高的硬件代價,可得到最高的執行速度。

相關文章
相關標籤/搜索