先放一張圖
計(jì)算機(jī)內(nèi)部對(duì)于浮點(diǎn)數(shù)處理是不夠精確的。
1、浮點(diǎn)數(shù)的二進(jìn)制表示
整數(shù)部分:用十進(jìn)制整數(shù)整除以2,得到商和余數(shù),該余數(shù)就是二進(jìn)制數(shù)的最低位,然后繼續(xù)用商整除以2,得到新的商和余數(shù),以此類推,直到商等于0,由所有余數(shù)倒排組成了該整數(shù)的二進(jìn)制表現(xiàn)形式。
小數(shù)部分:乘以2,取整數(shù)0或者1,剩下的小數(shù)繼續(xù)乘2一直重復(fù),直到小數(shù)部分為0或達(dá)到指定的精度為止
2、存儲(chǔ)規(guī)則
由于Python封裝了C語(yǔ)言的特性,根據(jù)國(guó)際IEEE754標(biāo)準(zhǔn)進(jìn)行存儲(chǔ)。
IEEE754標(biāo)準(zhǔn)包含一組實(shí)數(shù)的二進(jìn)制表示法,由符號(hào)位、指數(shù)位、尾數(shù)位組成,各種精度各部分的位數(shù)如下:
3、轉(zhuǎn)換為IEEE754標(biāo)準(zhǔn)的二進(jìn)制數(shù)
規(guī)格化
當(dāng)尾數(shù)不為0時(shí),尾數(shù)域的高有效位為1,這稱為浮點(diǎn)數(shù)的規(guī)格化。否則,以修改階碼同時(shí)左右移動(dòng)小數(shù)點(diǎn)位置的辦法,使其成為規(guī)格化數(shù)的形式。
32位浮點(diǎn)數(shù):
,S為符號(hào)位(0正1負(fù)),M為規(guī)格化后的小數(shù)尾數(shù)
64位浮點(diǎn)數(shù):e=E-1023
移碼
在真值基礎(chǔ)上加2^n(機(jī)器字長(zhǎng)為n+1),其中2^n>x≥-2^n
舉一個(gè)簡(jiǎn)單例子:
1.5=[1.1],符號(hào)位為0,指數(shù)e=0,規(guī)格化后尾數(shù)為1.1。
尾數(shù)域M右側(cè)以0補(bǔ)全,得尾數(shù)域:
M=[100?0000?0000?0000?0000?0000]
階碼E:
E=[0]移?1=[10000000]?1=[01111111]
得1.5的機(jī)器碼:
1.5=[0011?1111?1100?0000?0000?0000?0000?0000]
十六進(jìn)制表示為1.5=0x3fc00000。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。