1. 二進(jìn)制小數(shù)
// 10.42
// 整數(shù)部分: 10 / 2 = 5 余 0
// 5 / 2 = 2 余 1
// 2 / 2 = 1 余 0
// 1 / 2 = 0 余 1 // 商得到0為止
// 整數(shù)部分二進(jìn)制: 1010
// 小數(shù)部分:乘以2,得到0, 取整佛掖, 小數(shù)得到0為止
// 0.42 * 2 = 0.84 0
// 0.84 * 2 = 1.68 1
// 0.68 * 2 = 1.36 1
// 0.36 * 2 = 0.72 0
// 0.72 * 2 = 1.44 1
// 0.44 * 2 = 0.88 0
// 0.88 * 2 = 1.76 1
// 0.76 * 2 = 1.52 1
// 0.52 * 2 = 1.04 1
// 0.04 * 2 = 0.08 0
// 0.08 * 2 = 0.16 0
// 0.32 * 2 = 0.64 0
// 0.64 * 2 = 1.28 1
// 0.28 * 2 = 0.56 0
// 0.56 * 2 = 1.12 1
// 0.12 * 2 = 0.24 0
// 0.24 * 2 = 0.48 0
// 0.48 * 2 = 0.96 0
// 0.96 * 2 = 1.92 1
...
// 整體表示 : 1010.01101...
// 概念
// 1.float 四個(gè)字節(jié) 32位
// 2.最高位 表示正負(fù)號(hào) 0-正 1-負(fù)
// 3.緊跟著8位表示指數(shù)位恬汁,取值范圍 0-255 由于指數(shù)也有正負(fù)號(hào)鸭你,指數(shù)位需加127 實(shí)際取值范圍:-127 + 128
// 剩下23位是有效數(shù)字珊皿,有效數(shù)字最高位都是1溢十,所以省略掉截粗。補(bǔ)充后面的有效數(shù)字
// 實(shí)例
// 1010.01101... 小數(shù)點(diǎn)左移三位 1.01001101..
// 正數(shù)所以最高位為0
// 小數(shù)點(diǎn)左移三位:指數(shù)位為127+3=130 二進(jìn)制10000010
// 補(bǔ)充有效數(shù)字信姓,有效數(shù)字小于23剩余的補(bǔ)0 01001101...
0100 0001 0010 0110 1.......
// 轉(zhuǎn)為十進(jìn)制
// 假設(shè) 將 ... 都看為0, 損失部分精度
0100 0001 0010 0110 1000 0000 0000 0000
// 1 - 符號(hào)位是0鸵隧, 表示正數(shù)
// 2 - 指數(shù)位 0001 0010 0 130 - 127 = 3
// 3 - 有效數(shù)字 1.01001101
// 正數(shù),小數(shù)點(diǎn)向右移動(dòng) 1010.01101
// 正數(shù)部分: 02^0 + 12^1 + 0*2^2 + 1 * 2^3 = 10
// 小數(shù)部分:0/(2^1) + 1/(2^2) + 1/(2^3) + 0/(2^4) + 1/(2^5) = 0+0.25 + 0.125 + 0 + 0.03125 = 0.40625
// 最后 10.40625 由于實(shí)例中舍去有效數(shù)字過(guò)多意推,導(dǎo)致精度損失非常大
// 所以說(shuō)豆瘫,浮點(diǎn)型損失精度,是丟棄掉23位有效數(shù)字后面的數(shù)字菊值,造成精度損失
// 對(duì)于double 1個(gè)符號(hào)位(S) 11個(gè)指數(shù)位(E) 52位表示有效數(shù)字(M)
// 指數(shù)的范圍 -2^10-1 至 2^10 偏移量 = 實(shí)際偏移量 + 2^10-1