http://www.cnblogs.com/yewsky/articles/1864934.html
十進(jìn)制整數(shù)轉(zhuǎn)化成二進(jìn)制數(shù):
11/2=5 余? 1
5/2=2? 余? 1
2/2=1? 余? 0
1/2=0? 余? 1
0結(jié)束? ? ? ? 11二進(jìn)制表示為(從下往上):1011
這里提一點:只要遇到除以后的結(jié)果為0了就結(jié)束了,大家想一想弓候,所有整數(shù)除以2是不是一定能夠最終得到0岳遥。換句話說,所有的整數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù)的算法會不會無限循環(huán)下去呢?絕對不會摊欠,整數(shù)永遠(yuǎn)可以用二進(jìn)制精確表示 捌显,但小數(shù)就不一定了。
十進(jìn)制小數(shù)如何轉(zhuǎn)化為二進(jìn)制數(shù)
算法是乘以2直到?jīng)]有了小數(shù)為止陡厘。舉個例子抽米,0.9表示成二進(jìn)制數(shù)
0.9*2=1.8? 取整數(shù)部分 1
0.8(1.8的小數(shù)部分)*2=1.6? ? 取整數(shù)部分 1
0.6*2=1.2? 取整數(shù)部分 1
0.2*2=0.4? 取整數(shù)部分 0
0.4*2=0.8? 取整數(shù)部分 0
0.8*2=1.6 取整數(shù)部分 1
0.6*2=1.2? 取整數(shù)部分 0
.........? ? ? 0.9二進(jìn)制表示為(從上往下):0.11100100100100......
注意:上面的計算過程循環(huán)了,也就是說*2永遠(yuǎn)不可能消滅小數(shù)部分糙置,這樣算法將無限下去云茸。很顯然,小數(shù)的二進(jìn)制表示有時是不可能精確的 谤饭。其實道理很簡單标捺,十進(jìn)制系統(tǒng)中能不能準(zhǔn)確表示出1/3呢?同樣二進(jìn)制系統(tǒng)也無法準(zhǔn)確表示1/10揉抵。這也就解釋了為什么浮點型減法出現(xiàn)了"減不盡"的精度丟失問題亡容。