以實數 -9.625 為例,來看看如何將其表達為單精度的浮點數格式。具體轉換步驟如下:
1、首先,需要將 -9.625 用二進位制浮點數表達出來,然後變換為相應的浮點數格式。即 -9.625 的二進位制為 1001.101,用規範的浮點數表達應為 1.001101×23。冪次等於小數點移動的位數
2、其次,因為 -9.625 是負數,所以符號段為 1。而這裡的指數為 3,所以指數段為 3+127=130,即二進位制的 10000010。有效數字省略掉小數點左側的 1 之後為 001101,然後在右側用零補齊。因此所得的最終結果為:
3、最後,我們還可以將浮點數形式表示為十六進製制的資料,如下所示:
即最終的十六進製制結果為 0xc11a0000。
我們知道,指數可以為正數,也可以為負數。為了處理負指數的情況,實際的指數值按要求需要加上乙個偏置(bias)值作為儲存在指數段中的值。因此,這種情況下的指數段被解釋為以偏置形式表示的有符號整數。即指數的值為:e=e-bias
其中,e 是無符號數,其位表示為 ek-1…e1e0,而 bias 是乙個等於 2k-1-1(單精度是 127,雙精度是 1023)的偏置值。由此產生指數的取值範圍是:單精度為 -126~+127,雙精度為 -1022~+1023。
對小數段 frac,可解釋為描述小數值 f,其中 0≤f<1,其二進位制表示為 0.fn-1…f1f0,也就是二進位制小數點在最高有效位的左邊。有效數字定義為 m=1+f。有時候,這種方式也叫作隱含的以 1 開頭的表示法,因為我們可以把 m 看成乙個二進位制表示式為 1.fn-1fn-2…f0 的數字。既然我們總是能夠調整指數 e,使得有效數字 m 的範圍為 1≤m<2(假設沒有溢位),那麼這種表示方法是一種輕鬆獲得乙個額外精度位的技巧。同時,由於第一位總是等於 1,因此我們就不需要顯式地表示它。拿單精度數為例,按照上面所介紹的知識,實際上可以用 23 位長的有效數字來表達 24 位的有效數字。比如,對單精度數而言,二進位制的 1001.101(即十進位制的 9.625)可以表達為 1.001101×23,所以實際儲存在有效數字位中的值為:
00110100000000000000000
即去掉小數點左側的 1,並用 0 在右側補齊。
正負數二進位制
1 原碼 乙個正數的原碼,是按照絕對值大小轉換成的二進位制數 乙個負數的原碼,是按照絕對值大小轉換成的二進位制數,然後最高位補1。2 反碼 正數的反碼與原碼相同 負數的反碼為對該數的原碼除符號位外各位取反 原為1,取反為0 否則相反 3 補碼 正數的補碼與原碼相同 負數的補碼為對該數的原碼除符號位外...
二進位制正負數的原碼 反碼 補碼之間的轉化
首先,計算機都是使用二進位制的補碼進行計算。1 正數的二進位制原碼 反碼 補碼都是相同的 2 負數的二進位制原碼 負數的絕對值的二進位制的最高位變為1 1是標誌位,只用來表示正負,1表示負數,0表示是正數。所以八位二進位制的取值範圍是 127,127 其餘位與正數原碼相同。比如 32 第一步 32 ...
負數的二進位制怎麼表示
假設有乙個 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 00000101 5轉換成二制是101,不過int型別的數占用4位元組 32位 所以前面填了一堆0。現在想知道,5在計算機中如何表示?在計算機中,負數以其正值的補碼形式表達。...