1. 小數用二進制如何表示
首先,給出一個任意實數,整數部分用普通的二進制便可以表示,這里只說小數部分如何表示
例如0.6
文字描述該過程如下:將該數字乘以2,取出整數部分作為二進制表示的第1位;然后再將小數部分乘以2,將得到的整數部分作為二進制表示的第2位;以此類推,知道小數部分為0。
特殊情況: 小數部分出現循環,無法停止,則用有限的二進制位無法准確表示一個小數,這也是在編程語言中表示小數會出現誤差的原因
下面我們具體計算一下0.6的小數表示過程
0.6 * 2 = 1.2 ——————- 1
0.2 * 2 = 0.4 ——————- 0
0.4 * 2 = 0.8 ——————- 0
0.8 * 2 = 1.6 ——————- 1
0.6 * 2 = 1.2 ——————- 1
…………
我們可以發現在該計算中已經出現了循環,0.6用二進制表示為 1001 1001 1001 1001 ……
如果是10.6,那個10.6的完整二進制表示為 1010.100110011001……
2. 二進制表示的小數如何轉換為十進制
其實這個問題很簡單,我們再拿0.6的二進制表示舉例:1001 1001 1001 1001
文字描述:從左到右,v[i] * 2^( - i ), i 為從左到右的index,v[i]為該位的值,直接看例子,很直接的
0.6 = 1 * 2^-1 + 0 * 2^-2 + 0 * 2^-3 + 1 * 2^-4 + ……