將乙個float型轉化為記憶體儲存格式的步驟為:
①.將這個實數的絕對值轉化為二進位制,轉化方法如下:例如11.25表示為二進位制數先將整數部分轉為二進位制
11/2=5 餘1
5/2=2 餘1
2/2=1 餘0
1/2 餘1
0結束 11的二進位制表示為(從下往上):1011
小數部分轉化為二進位制:用小數部分乘以2,乘到小數部分為0或者到精確位數為止.
0.25x2=0.5 0
0.5x2=1 1
小數部分的二進位制表示為(從上往下):01
11.25的二進位制表示可表示為1011.01
②將這個二進位制格式實數的小數點左移或者右移n位,直到小數點移動到第乙個有效數字的右邊.向左移為+,向右移為-
1011.01移動到第乙個有效數字需要向左移3位,指數為+3,結果為1.01101
③從小數點右邊第一位開始數出二十三位數字放入第22到第0位,如果位數不夠右邊補零
1.01101->將小數字放入22-0位,從左到右,右邊位數不夠補零
④如果實數是正的,則在第31位放入0,否則放入1
⑤如果n是左移得到的,說明指數為正,第30位放入1.如果是右移得到的或 n=0,則第30為放入0;
⑥將n減去1後化為二進位制,並在左邊加補0補足七位,再放入第29到第23位
1011.01->1.01101為左移3為,指數為3,所以這裡是3-1=2,16進製為10,左邊補0
另外一種方法就是用127加上指數,得出的二進位制結果就是中間的8位
這裡指數為+3, 127+3=130 16進製為 0x82,二進位制表示為 1000 0010
如果指數為-3,127+(-3)=124 16進製為7c,二進位制表示為0111 1100
結果為 0100 0001 0011 0100 0000 0000 0000 0000
4 1 3 4 0 0 0 0
到此,float存入記憶體完成
8.4存入記憶體
整數部分8
8/2=4 0
4/2=2 0
2/2=1 0
1/2=0 1
二進位制為 1000
小數部分0.4,這裡為死迴圈,所以只計算到最大位數
0.4x2=0.8 0
0.8x2=1.6 1
0.6x2=1.2 1
0.2x2=0.4 0
0.4x2=0.8 0
0.8x2=1.6 1
0.6x2=1.2 1
0.2x2=0.4 0
0.4x2=0.8 0
0.8x2=1.6 1
0.6x2=1.2 1
0.2x2=0.4 0
0.4x2=0.8 0
0.8x2=1.6 1
0.6x2=1.2 1
0.2x2=0.4 0
0.4x2=0.8 0
0.8x2=1.6 1
0.6x2=1.2 1
0.2x2=0.4 0
0.4x2=0.8 0
0.8x2=1.6 1
0.6x2=1.2 1
0.01100110011001100110011
8.4的二進位制為:1000.01100110011001100110011
1000.01100110011001100110011左移3位:1.00001100110011001100110 23位
8.4為整數,指數為左移3位,結果如下:
0.25存入記憶體: 只有小數部分
0.25x2=0.5 0
0.5x2=1 1
0.25二進位制位:0.01
0.01->1.00 右移2位 所以指數為負數 -2-1=-3 十六進製制fd 二進位制 11111101
由於第30位是由( 左移為1 )或 (右移為0) 的來決定,所以只會取七位放入也就是 1111101,所以結果為:
指數為-2,127+(-2)=125 16進製為7d,二進位制表示為0111 1101
0011 1110 1000 0000 0000 0000 0000 0000
3 e 8 0 0 0 0 0
double型轉為二進位制如下
C語言資料儲存 浮點型
浮點數的儲存 ieee 745 乙個例項 關於e的一些注意點 1 float 3.4e 38 3.4e38 2 double 1.7e 308 1.7e308 3 long double 3.4e 4932 1.1e4932 我們以9.5為例,首先將乙個浮點型資料轉化為2進製形式,同時分為整數部分和...
整數 浮點型在記憶體中儲存
1 整數在記憶體中的儲存 在計算機系統中,整數統一用補碼來表示和儲存。這裡普及一下 原碼 反碼 補碼 這三種表示方式均有符號位和數值為兩部分,符號位是首位用 0 表示 正數 用 1 表示 負數 原碼 直接將二進位制按照正負數的形式翻譯成二進位制就可以了。反碼 將原碼的符號位不變,其他位按位取反就可以...
浮點型在記憶體中的儲存
以單精度型別變數為例 1.國際標準ieee 電氣和電子工程協會 754,任意乙個浮點數都可以表示為 1 s m 2 e,其中 1 s表示符號位,當資料為負時s 1,當資料為正時s 0 2 m表示有效數字位,它在記憶體中佔據23個位元位,它的取值範圍是大於等於1,小於2,而計算機對m進行存的時候只存小...