float內存存儲結構(共4字節(jié),32位分別如下):
31 30 29----23 22----0
實數(shù)符號位 指數(shù)符號位 指數(shù)位 有效數(shù)位
其中實數(shù)符號位0表示正,1表示負;指數(shù)符號位1表示正,0表示負
float在計算機中的存儲計算方法:
1. 先將這個實數(shù)的絕對值化為二進制格式,方法是:實數(shù)的整數(shù)部分是除2取余和小數(shù)部分是乘2取整
2. 將這個二進制格式實數(shù)的小數(shù)點左移或右移n位,直到小數(shù)點移動到第一個有效數(shù)字的右邊。
3. 從小數(shù)點右邊第一位開始數(shù)出二十三位數(shù)字放入第22到第0位。
4. 如果實數(shù)是正的,則在第31位放入“0”,否則放入“1”。
5. 如果n 是左移得到的,說明指數(shù)是正的,第30位放入“1”。如果n是右移得到的或n=0,則第30位放入“0”。
6. 如果n是左移得到的,則將n減去1后化為二進制,并在左邊加“0”補足七位,放入第29到第23位。如果n是右移得到的或n=0,
則將n化為二進制后在左邊加“0”補足七位,再各位求反,再放入第29到第23位。
根據(jù)上面那個步驟得:
(1). 23.172001二進制形式為:0001,0111.0010,1100,0000,1000,0100,0001....
(2)左移4位得:1.0111.0010,1100,0000,1000,0100,0001
(3)取小數(shù)點后23位得: 0111.0010,1100,0000,1000,010(這23位為float數(shù)二進制碼的后23位)
(4)第31位: 0
(5)第30位: 1
(6)左移4位,4的二進制0011,不足7位則:0000,011
最后得23.172001在計算機中的二進制表現(xiàn)形式為:0100,0001,1011,1001,0110,0000,0100,0010
二進制轉16進制得:41A96042
@import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
From: http://topic.csdn.net/u/20111217/19/6c5221d6-a779-4e6c-9eb0-72949857dc6e.html?95401