計算機中的真值和機器數


真值(即:帶有正負號的數值是真值,用0或1來表示正負號的數值是機器數,例如:-10011為真值,110011為機器數)

以下X表示數據的真值。

1. 原碼表示法

最簡單且直觀的機器數表示法,其最高位為符號位(0為正,1為負),數值部分與真值的數值相同

設X為純小數,一位符號位,n個數值位,則

[X]
{
X                  0=<X<=1-2 n-1

1-X=1+|X|             -(1-2n-1)=<X<=0

 例如:x=-0.1001,那么先把它轉化成機器數為:1.1001

 根據公式:[X]=1-X=1-(-0.1001)=1+0.1001=1.1001=1+|-0.1001|

     [+0.8125]=(0.1101000)2
    [-0.8125]=1-(-0.8125)=(1.0000000)2+(0.1101000)2=(1.1101000)2

設X為純整數,一位符號位,n個數值位,則

[X]
{
X                         0=<X<=2 n-1

2nX=2n+|X|           -(2n-1)=<X<=0

   例如:機器字長n=8
   [+35]=(00100011)2
   [-35]=27-(-35)=(10000000)2+(00100011)2=(10100011)
2

2.補碼表示法

    變形補碼:即用兩個二進制位來表示數字的符號位,其余與補碼相同。變形補碼,用"00"表示正,用"11"表示負,也稱為模4的補碼。

    用變形補碼進行加減運算時,當運算結果的符號位出現"01"或者"10"時,則表示產生溢出。變形補碼的最高位(第一個符號位)總是表示正確的符號,

    比如"00"、 "01"分別表示     正數、正溢出(上溢),"11"、"10"表示負數、負溢出(下溢)。

1、產生01的情況:   補碼:    0 111+ 0 010----1 001

    兩個正數相加出現了負數,明顯有誤,就是說此時產生了上溢出(注:補碼運算時符號位也參與運算)

                     變形補碼:    00 111+ 00 010----01 001

     此時讀數時,由於左邊的符號位是0,所以表示正數,讀成+9,而不像模二補碼中變成了-7

2、產生10的情況:   補碼:   1 001+ 1 010---- 10 011

    溢出一位后,結果變成了0 011,兩個負數相加出現了正數,明顯有誤,就是說此時產生了下溢出(注:補碼運算時符號位也參與運算)

                     變形補碼:    11 001+ 11 010----110 011

    溢出一位后,結果變成了10 011,此時讀數時,由於左邊的符號位是1,所以表示負數,讀成-19,而不像模二補碼中變成了+3

    (注:產生01和10時,讀數時右邊那一位符號也要算在數字里面)


   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM