您好,登錄后才能下訂單哦!
先放一張圖
計算機內部對于浮點數處理是不夠精確的。
1、浮點數的二進制表示
整數部分:用十進制整數整除以2,得到商和余數,該余數就是二進制數的最低位,然后繼續用商整除以2,得到新的商和余數,以此類推,直到商等于0,由所有余數倒排組成了該整數的二進制表現形式。
小數部分:乘以2,取整數0或者1,剩下的小數繼續乘2一直重復,直到小數部分為0或達到指定的精度為止
2、存儲規則
由于Python封裝了C語言的特性,根據國際IEEE754標準進行存儲。
IEEE754標準包含一組實數的二進制表示法,由符號位、指數位、尾數位組成,各種精度各部分的位數如下:
3、轉換為IEEE754標準的二進制數
規格化
當尾數不為0時,尾數域的最高有效位為1,這稱為浮點數的規格化。否則,以修改階碼同時左右移動小數點位置的辦法,使其成為規格化數的形式。
32位浮點數:
,S為符號位(0正1負),M為規格化后的小數尾數
64位浮點數:e=E-1023
移碼
在真值基礎上加2^n(機器字長為n+1),其中2^n>x≥-2^n
舉一個簡單例子:
1.5=[1.1],符號位為0,指數e=0,規格化后尾數為1.1。
尾數域M右側以0補全,得尾數域:
M=[100?0000?0000?0000?0000?0000]
階碼E:
E=[0]移?1=[10000000]?1=[01111111]
得1.5的機器碼:
1.5=[0011?1111?1100?0000?0000?0000?0000?0000]
十六進制表示為1.5=0x3fc00000。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。