1 7 小數的儲存

2022-05-11 14:25:09 字數 1022 閱讀 8196

1.7.1 浮點記數法

以8個位長度的位模式來演示浮點數的表示:

最高位為符號位,符號位右邊3位為指數域,最後4位為尾數域

1. 浮點數解碼

例如:0  110  1011 對這個8位模式來表示的浮點數進行十進位制的解碼。第一位是0,說明這個數是個非負數

先在最後四位的前面加乙個小數點為:     .1011

再將指數域作為乙個3位的餘碼記數法的整數: 110 的餘碼表示的十進位制數為正數2

根據得到的指數域所代表的十進位制數,以及正負符號,將尾數域的小數點移動,正數為右移,負數字左移。即,得到  10.11

再將小數點移動後得到的尾數,解碼為十進位制數得到:2又3/4

0 011 1100 對這個8位模式的浮點數進行解碼。

尾數域前加小數點:  .1100

用餘碼記數法解碼指數域: -1

尾數域小數點左移1位: .01100 

結果為: 2⅜

2.浮點數編碼

例如: 1又1/8   編碼為二進位制記數法的位模式為 1.001

從最左邊的1開始,複製位模式到尾數域為 1001  並假設最左邊存在乙個小數點為  .1001

因為.1001 需要右移1位才能得到1.001,餘數記數法表示正數1為101,指數域為101

此例的數值為正數,因此01011001

1.7.2 截斷誤差

依然用8位來表示浮點數。1位符號位 3位指數域 4位尾數域

2又5/8   轉換為二進位制記數法為 10101,是5位長度的位模式。因此將這個位模式複製到尾數域中時會丟失掉最右邊一位,就就是截斷誤差

多個浮點數相加時,大數字+小數字,小數字可能會被截斷。小數字+小數字,得到的值再+稍大的數字則不容易出現截斷。因此,浮點數多個數相加時,相加的順序很重要。

C 小數的儲存方式

在c c 中float是32位的,double是64位的,兩者在記憶體中的儲存方式和能夠表示的精度均不同,目前c c 編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。無論是float還是double,在記憶體中的儲存主要分成三部分,分別是 1 符號位 sign 0代表正...

C 負數 小數如何儲存

正整數直接按照原始碼儲存,負整數按照補碼儲存。首先要清楚原碼 反碼 補碼 計算機中乙個位元組為8位,在此以乙個位元組為例 原碼 十進位制1 0000 0001 十進位制 1 1000 0001 負數的符號位為1 反碼 十進位制1 0000 00001 十進位制 1 1111 1110 除符號位外,其...

17 hive 的資料儲存格式

行儲存的特點 查詢滿足條件的一整行 所有列 資料的時候,列儲存則需要去每個聚集的字段找到對應的每個列的值,行儲存只需要找到其中乙個值,其餘的值都在相鄰地方,所以此時行儲存查詢的速度更快。列儲存的特點 因為每個欄位的資料聚集儲存,在查詢只需要少數幾個欄位的時候,能大大減少讀取的資料量 每個欄位的資料型...