正則表達式和EXCESS系統(tǒng)
尾數(shù)部分
? 「尾數(shù)部分」 使用 「正則表達式」 ,可以將表現(xiàn)形式多樣的浮點數(shù)統(tǒng)一為一種表現(xiàn)形式。
?
例如,十進制數(shù)0.75
就有很多表現(xiàn)形式。
雖然他們表示的都是 「同一個數(shù)值」 ,但因為表現(xiàn)方法太多,計算機在處理時會比較麻煩。
因此,需要制定統(tǒng)一的規(guī)則:
?十進制數(shù)的浮點數(shù)應該遵循:「小數(shù)點前面是0,小數(shù)點后面第一位不能是0」
?
也就是說,只能用 「尾數(shù)」 部分是0.75
、 「指數(shù)」 部分是0
的方法來表示。即0.75 × 100
?在二進制數(shù)中,我們規(guī)定:「將小數(shù)點前面的值固定為
1
的正則表達式」?
具體來講,就是將二進制數(shù)表示的小數(shù) 「左移」 或 「右移」 (邏輯移位
)數(shù)次后, 「整數(shù)部分」 的第一位變成1, 「第二位之后都變成0」 。
?而且, 「第一位的
1
在實際的數(shù)據(jù)中不保存」 ,因此省略該部分后就可以節(jié)省一個數(shù)據(jù)位,從而可以表示更多的數(shù)據(jù)范圍。?
我們,看一下1011.0011
如何用單精度浮點數(shù)的正則表達式來表示 「尾數(shù)部分」 。
指數(shù)部分
「指數(shù)部分」 中使用的是EXCESS
系統(tǒng),使用這種方式主要是 「為了表示負數(shù)時不使用符號位」 。
在某些情況下,在指數(shù)部分,需要通過 「負〇〇次冪」 的形式來表示負數(shù)。
? 「EXCESS系統(tǒng)」 表現(xiàn)是指,通過將指數(shù)部分表示范圍的 「中間值」 設置
0
,使得負數(shù)不需要用符號來表示。?
也就是說,當 「指數(shù)部分」 是8位單精度浮點數(shù)
時,最大值11111111=255
的1/2
,即01111111=127
(小數(shù)部分舍棄)表示的是0
。
我們再來一個例子說明。假設有這樣一個游戲,用1~13
(A~K
)的撲克牌來表示負數(shù)。此時,我們把 「中間」 的7
當做0
。那么10
表示+3
,3
表示-4
。
單精度浮點數(shù)指數(shù)部分的EXCESS系統(tǒng)表現(xiàn)
實際運用
我們來一起看看如何用單精度浮點數(shù)來表示十進制數(shù)0.75
。
- 「符號位」 :因為
0.75
是正數(shù),所以符號位是0
0.75
轉換成二進制正則表示為1.1×2-1
,按照前面介紹的就很容易知道下面的各個數(shù)值。
- 「指數(shù)部分」 :為
-1
,但是用EXCESS
表示的話,就變成了01111110
。換算為十進制為126
。而EXCESS
系統(tǒng)中,126
代表-1
- 「尾數(shù)部分」 :根據(jù)正則表達式的規(guī)則,小數(shù)點前面的第1位是
1
,因此 「尾數(shù)部分」1000···
實際上表示的是1.1000···
二進制數(shù)和十六進制數(shù)關系
在以 「位」 為單位表示數(shù)據(jù)時,使用二進制數(shù)很方便,但如果位數(shù)太多,看起來很麻煩。因此,在實際程序中,經(jīng)常用 「十六進制數(shù)」 來替代 「二進制數(shù)」 。
在一些高級語言中,只需要在數(shù)值的開頭加上0x
就可以表示十六進制數(shù)。
?二進制數(shù)的4位,正好相當于十六進制數(shù)的1位。
?
由此可見,通過使用十六進制數(shù),二進制數(shù)的位數(shù)能夠 「縮短」 至原來的1/4
。
用十六進制數(shù)表示二進制 「小數(shù)」 時,小數(shù)點后的二進制數(shù)的4位也同樣相當于十六進制數(shù)的1位。「不夠4位時用0填補二進制的低位」
-
二進制
+關注
關注
2文章
796瀏覽量
41757 -
計算機
+關注
關注
19文章
7536瀏覽量
88643 -
代碼
+關注
關注
30文章
4827瀏覽量
69054
發(fā)布評論請先 登錄
相關推薦
評論