二進十進制譯碼器難點?本文功能:浮點數0.1 0.2 不等于 0.3的前置知識點,我來為大家講解一下關于二進十進制譯碼器難點?跟着小編一起來看一看吧!
二進十進制譯碼器難點
本文功能:
浮點數0.1 0.2 不等于 0.3的前置知識點
我們知道js存儲number類型的數據采用的是IEEE 754雙精度(64位),我們了解到對應存儲原理,才能具體解釋0.1 0.2 不等于 0.3
組成 |
描述 |
位數 |
位置 |
sign |
符号,0表示正,1表示負 |
1bit |
63 |
exponent |
指數部分 |
11bit |
52-62 |
fraction |
小數部分 |
52bit |
0-51 |
計算公式A:
看完公式我們舉個栗子:
var a = 2
具體的思路: 将10進制轉換為二進制, 二進制使用科學計數法表示。
根據公式即可得出結果
最終結果:
一、十進制轉二進制
整數:
1.将十進制數用2整除法,得到商和餘數
2. 繼續用商用2整除法,直到商小于1
3. 從下到上依次寫餘數便得到轉化後的二進制
例如: 9轉二進制
浮點數:
- 将數拆為整數和小數部分
- 整數用整數整除2法則
- 小數部分乘2 ,取出對應的整數部分
- 執行3點,直到值小數部分等于0或者達到所求有效位數
- 從上到下每次乘二的整數部分即為轉化後的小數部分二進制
例如:9.3轉二進制
整數部分二進制為:1001
小數部分轉化過程:
由上圖可知轉化為二進制的小數是 01 1011 1011...(1011的無限循環)
最終的轉化為: 1001.011001(這是保留6位小數)
- 二進制轉十進制
整數計算:
浮點數:
1.将數拆為整數和小數部分
2.整數用整數計算方式
3.小數按照下圖計算
例如二進制數:0.111