91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深度剖析數據在內存中的存儲2——浮點數數在內存中的存儲

發布時間:2020-06-25 22:24:21 來源:網絡 閱讀:204 作者:flag不會倒 欄目:編程語言

根據國際標準IEEE:任意一個二進制浮點數V可以表示為下面形式:
(-1)^SM2^E:
(-1)^S表示符號位,當S為0,V為正數;當S為1,V為負數。由其物理結構決定了,浮點數為有符號數。
M為有效數字,大于等于1,小于2。
2^E表示指數位。
eg:5=>0101=>(-1)^01.012^2. S=0,M=1.01,E=2
規定:對于32位的浮點數(單精度浮點數存儲),最高1位是符號位(S),接著的8位為指數位(E),剩下的23位是有效數字位(M),不滿23位后面補0。
對于64位的浮點數(雙精度浮點數存儲),最高1位是符號位(S),接著的11位為指數位(E),剩下的52位是有效數字位(M)。
對于有效數字M和指數E會有一些特殊規定:
1、因為1<=M<2,所以小數點前必定是1,所以可以省略1和小數點,這樣一來,對于單精度浮點數存儲方式,23位有效數位存的都是小數部份數。讀取時,小數點和1都會被自動加上。等于可以保留24位有效數字。雙精度同理。
2、對于指數E來說,首先說明他是一個無符號整數,對于單精度浮點數存儲方式,E共占8位,則E的取值范圍為0~255。但是科學記數法中,指數是可以為負數的,所以規定,存入內存時,E的真實值必須加上一個中間數,對于8位的E,這個中間數為(255/2=)127(實際表達范圍-127~128),對于11位的E,這個中間數為1023(實際表達范圍-1023~1024)。取數時,再減去127/1023即為實際值。(移碼)
eg. 由上面可知,5的指數為2,對于單精度浮點數存儲方式,實際在內存中存儲的數為127+2=129=>1000 0001。
注意:因為當E為全零時,實際上指數為-127,表示一個接近零很小的數,因此浮點數不能與零比較,用精度來代替。當E為全一時,表示的±無窮大。
綜述:整數與浮點數的存儲方式完全不同,整數存取為原反補碼,浮點數為S、E、M
練習代碼:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main()
{
    int n = 9;                        //0000 0000 0000 0000 0000 0000 0000 1001
    float pFloat = (float)n;          //將9取出,轉為浮點型,再存給pFloat
    float *pfloat = (float *)&n;      //將n的地址轉為浮點數地址(即看待n的方式變為浮點數)。
    printf("n=%d\n", n);
    printf("pFloat=%f\n", pFloat);
    printf("*float=%f\n", *pfloat);   //解引用后以浮點數形式看待空間里的值  0 00000000 00000000000000000001001   S=0,E=0,(-127)
    *pfloat = 9.0;                    //1001 實際n空間中存的值0 00000011 00100000000000000001001 
    printf("n=%d\n", n);              //轉換為整數為 1091567616
    printf("*float=%f\n", *pfloat);   // 9.000000
    system("pause");
    return 0;
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青海省| 石台县| 青田县| 巴南区| 苏尼特右旗| 依兰县| 呼玛县| 宜兴市| 克山县| 大荔县| 舞阳县| 金秀| 望江县| 喜德县| 新晃| 定远县| 金华市| 永城市| 遵义县| 蒙山县| 泸西县| 名山县| 祁东县| 电白县| 溧阳市| 松桃| 中阳县| 徐水县| 综艺| 商洛市| 儋州市| 靖江市| 健康| 梅州市| 安徽省| 阿克| 攀枝花市| 桓台县| 丹寨县| 丰县| 永安市|