引入移码的目的
計算機(jī)表示浮點(diǎn)數(shù)難免會有精度損失。(表示分母是2的冪的浮點(diǎn)數(shù)可以完美表示)
計算機(jī)IEEE標(biāo)準(zhǔn)規(guī)定計算機(jī)浮點(diǎn)數(shù)由三部分構(gòu)成:符號位(s)、階碼(exp)、尾數(shù)(farc)
single精度與double精度以及32、64位機(jī)表示階碼和尾數(shù)使用的bit都各不相同,一般來說,位數(shù)越多,精度越高。
在規(guī)格化浮點(diǎn)數(shù)的時候,常常會規(guī)格化為1.xxxx的形式,因此比較浮點(diǎn)數(shù)的大小會十分方便。
在比較浮點(diǎn)數(shù)的時候,由于是統(tǒng)一形式,人可以一眼比較出十進(jìn)制中三位數(shù)大于兩位數(shù),因此大多數(shù)時候只需要比較階碼的大小即可比較出浮點(diǎn)數(shù)的大小。
在比較浮點(diǎn)數(shù)階碼大小時,IEEE采用unsigned進(jìn)行比較,這樣可以加快比較速度。
因為階碼可能為正負(fù)數(shù),所以直覺告訴我們補(bǔ)碼可以用來表示階碼進(jìn)而用來比較大小。確實可以。
但當(dāng)補(bǔ)碼轉(zhuǎn)化為unsigned,即符號位參與運(yùn)算比較的時候,就出現(xiàn)了問題:
-2與1比較:(5位為例)
補(bǔ)碼:11110 < 00001
unsigned int:11110 > 00001
顯然補(bǔ)碼轉(zhuǎn)化為unsigned后出現(xiàn)了問題。
針對問題,引入了移碼:直白點(diǎn)來說,就是補(bǔ)碼的符號位取反即為移碼。
再次看上面的例子(-2和5)
移碼:01110 < 10001
unsigned int:01110<10001
因此移碼的引入方便了浮點(diǎn)數(shù)的比較。
總結(jié)
- 上一篇: springMVC+jcrop实现头像上
- 下一篇: 《乐高EV3机器人搭建与编程》一2.5