最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

重學(xué)c/c++之?dāng)?shù)據(jù)存儲(chǔ)詳解(整數(shù)、浮點(diǎn)數(shù))

 更新時(shí)間:2022年11月10日 08:49:10   作者:Not?Talk  
C語(yǔ)言給定了一些基本的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于重學(xué)c/c++之?dāng)?shù)據(jù)存儲(chǔ)(整數(shù)、浮點(diǎn)數(shù))的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一:整形

正常情況下

正數(shù)在內(nèi)存中的存儲(chǔ)為補(bǔ)碼。

char a=30;

00011110(計(jì)算機(jī)中的存儲(chǔ))

負(fù)數(shù)在內(nèi)存中的存儲(chǔ)為補(bǔ)碼。

char a=-30;

10011110(原碼)
11100001(反碼)
11111011(計(jì)算機(jī)中的存儲(chǔ))

注意的是當(dāng)數(shù)據(jù)存在溢出的時(shí)候,會(huì)變成負(fù)數(shù),如下圖。

int main() {
    char a=130;
    printf("%d",a);// -126
}

分析

10000010(計(jì)算機(jī)中的存儲(chǔ))

特殊情況下

有符號(hào)

unsigned char c=-1;

解釋

10000001(機(jī)器碼)
111111110(反碼)
111111111(補(bǔ)碼,由于是無(wú)符號(hào),符號(hào)變0,即01111111)

char c=-2;//4294967294

10000000 00000000 00000000 00000010(機(jī)器碼)
11111111 11111111 11111111 11111101(反碼)
11111111 11111111 11111111 11111110 (補(bǔ)碼,由于輸出的是無(wú)符號(hào)位,所以直接輸出,不需要轉(zhuǎn)化)

數(shù)據(jù)溢出()

正數(shù)(負(fù)數(shù))

 char a=129;
 printf("%d",a);//-127

解釋

1000 0001(首先,會(huì)把129的機(jī)器碼作為補(bǔ)碼存儲(chǔ)在內(nèi)存中)
1111 1111(減一求反得到原碼,然后輸出)
如果只有最高位為負(fù)數(shù),則直接加負(fù)號(hào)

char a=-130;

解釋

1000 0010(首先,會(huì)把-130的機(jī)器碼作為補(bǔ)碼存儲(chǔ)在內(nèi)存中)
1000 0001(減一)
0111 1110 2+4+8+16+32+64=126 (得到原碼)

補(bǔ)充

大端存儲(chǔ):數(shù)據(jù)的低位保存在內(nèi)存的高位中,而數(shù)據(jù)的高位保存在內(nèi)存大地位中。
小端存儲(chǔ):數(shù)據(jù)的低位保存在內(nèi)存的高位中,而數(shù)據(jù)的高位保存在內(nèi)存大地位中。

//設(shè)計(jì)一個(gè)小程序來(lái)判斷當(dāng)前機(jī)器的字節(jié)序
Bool checkSys(){
int a=1;
return (*(char *)&i);
}

二:浮點(diǎn)型

根據(jù)國(guó)際標(biāo)準(zhǔn)IEEE(電氣和電子工程協(xié)會(huì)) 754,任意一個(gè)二進(jìn)制浮點(diǎn)數(shù)V可以表示成下面的形式:

(-1) ^ S * M * 2 ^ E

其中:

  • (-1) ^ S 表示符號(hào)位,當(dāng)S=0,V為正數(shù);當(dāng)S=1,V為負(fù)數(shù)。
  • M 表示有效數(shù)字,大于等于1,小于2。
  • 2 ^ E 表示指數(shù)。

注:

1、這里的有效數(shù)字范圍是[1,2),可類比十進(jìn)制中有效數(shù)字的范圍是[1,10)。

2、指數(shù)部分以2為底數(shù),類比十進(jìn)制中指數(shù)部分以10為底數(shù)。

例如十進(jìn)制中的5.0,寫(xiě)成二進(jìn)制浮點(diǎn)數(shù)是101.0,用該形式表示就是(-1) ^ 0 * 1.01 * 2 ^ 2
(其中S = 0, M = 1.01, E = 2)

又如十進(jìn)制中的-5.5,寫(xiě)成二進(jìn)制浮點(diǎn)數(shù)是101.1(此處小數(shù)點(diǎn)后的第一位權(quán)重是2 ^(-1),也就是0.5,所以此處是1),用該形式表示就是(-1) ^ 1 * 1.011 * 2 ^ 2

(其中S = 1, M = 1.011, E = 2)

E全為0時(shí)

由于E加上后127為全0,也就是說(shuō)E的真實(shí)值為-127,即該浮點(diǎn)數(shù)指數(shù)部分是2 ^ (-127),顯然這是一個(gè)極小的數(shù),此時(shí)有效數(shù)字M不再加上第一位的1,而是還原為以0為整數(shù)的小數(shù)。這樣做是為了表示±0,以及接近于0的很小的數(shù)字。

E全為1時(shí)

由于E加上后127為全1,也就是說(shuō)E的真實(shí)值為128,即該浮點(diǎn)數(shù)指數(shù)部分是2 ^ (128),顯然這是一個(gè)極大的數(shù),此時(shí)表示正負(fù)無(wú)窮大(正負(fù)號(hào)由S決定)

中以32位浮點(diǎn)數(shù)為例,64位浮點(diǎn)數(shù)同理

總結(jié)

到此這篇關(guān)于重學(xué)c/c++之?dāng)?shù)據(jù)存儲(chǔ)的文章就介紹到這了,更多相關(guān)c/c++數(shù)據(jù)存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

墨竹工卡县| 东海县| 通化县| 舟山市| 方山县| 合江县| 新巴尔虎左旗| 苏州市| 咸阳市| 丰都县| 饶阳县| 沂南县| 明水县| 大新县| 保亭| 会同县| 阿坝| 邯郸市| 唐山市| 左权县| 观塘区| 伊宁市| 大同市| 喀什市| 吕梁市| 松潘县| 玉山县| 子长县| 务川| 红原县| 田东县| 佛坪县| 光泽县| 汝阳县| 庆安县| 方山县| 潮州市| 安泽县| 广元市| 山西省| 苏尼特左旗|