計算機組成浮點數補碼規格化負數表示範圍

2021-09-24 18:34:24 字數 1082 閱讀 5195

推理:關於浮點數的表示與運算章節中,補碼規格化後的負數所能表示的範圍

一、記住形式1.0xx,現要找最大的負數

二、假設現在僅4位(符號位佔一位),毫無疑問就是-0.001,原碼表示就是1.001(最低位為0時-0在原碼中也是0),可是然後規格化得1.111,不符合形式

三、(推理)這個數取反+1要變成1.0xx,那麼原碼必須是1.1xx(因為若原碼是1.0xx,取反加一後還要是1.0,則只有1.000,但個數是0不是負數)

四、由上一步可知最大的負數應嘗試取到1.100,可是補碼是1.111還是不符合,因此再嘗試1.101,此時補碼是1.011,得到結果

結論:規格化浮點數的補碼規格化後負數為1.0xx形式且其最大值表示為1.01……1(不僅四位的話中間……處全補1)

反思:為何形式是1.0xx呢?(1是負數符號沒毛病,但為何就不能是1.1?)

反證:若取1.1xx,則可取1.111,這個補碼的原碼是1.001,表示的數是-0.001,這時問題就出現了,究竟何為規格化?

規格化:通過調整乙個非規格化浮點數的尾數和階碼的大小,使非零的浮點數在尾數的最高數字上保證是乙個有效值,當基數為2時,尾數m的絕對值滿足1/2<=|m|<=1

判斷:憑最後一句尾數m的要求就可以理解為何形式是1.0xx了

再問:為何使非零的浮點數在尾數的最高數字上保證是乙個有效值,尾數m絕對值就是大於1/2?(或者應該反過來說,為何尾數m絕對值就是大於1/2,可以保證最高數有效?)

易知:這是規定而來的,試想若能小於1/2,則最高位就是0了(尾數都是小數部分,相當於二進位制下小數點後一位),那又怎麼知道到第幾位會有效?若設為》=1/4,那為何不是1/8呢?所以大於等於1/2是有道理的,可以保證最高位是1

延伸:這就不難理解了

原碼與補碼的正數規格化形式都是0.1xx,max=0.111,min=0.100(範圍就是1/2到(1-2^-n))

負數時原碼可以表示的形式是1.1xx,因為最大值1.100,最小值1.111(範圍就是(1-2^-n)到1/2)

負數時補碼可以表示的形式是1.0xx,因為最大值1.011,最小值1.000(範圍是-1到-(1/2+2^-n)),注意1.000是-1的補碼,補碼中負0 是表示負得最多的數(即最小的負數)

浮點數規格化

當階碼是0的時候 1 0的表示 對於階碼為0或255的情況,ieee754標準有特別的規定 如果 階碼e 是0 並且尾數m 是0,則這個數的真值為 0 正負號和數符位有關 因此 0的機器碼為 0 00000000 000 0000 0000 0000 0000 0000。0的機器碼為 0 00000...

計算機組成之浮點數

符號位 資料的正負號標誌 正1負0。尾數部分 轉化成二進位制後的小數部分,其餘尾數補零。指數部分 1.轉化成二進位制後,再轉化成科學計數法 二進位制 如果是原來資料的左移得到的資料指數部分最高位為1,右移為0,其餘七位的計算方法 科學計數法的指數資料大小 1後用補碼計算數值。2.計算得出二進位制科學...

重溫計算機組成原理 浮點數

最主要的原因是按照整數這種定位數去在計算機中儲存,存的數量沒有滿足到需求。譬如 暫存器只有4位的話,儲存整數最多儲存10000個,範圍是0 9999。1 04 10000 10 4 10000 104 10 000如果是小數呢,加入小數點固定在中間,如99.99,儲存的數量也是10000。那麼9.9...