成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

詳解c語(yǔ)言整形和浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)

不知名網(wǎng)友 / 2012人閱讀

摘要:目錄數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)方式補(bǔ)碼,反碼,原碼數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)方式補(bǔ)碼,反碼,原碼整形在內(nèi)存中的存儲(chǔ)整形在內(nèi)存中的存儲(chǔ)整形類型整形類型大端字節(jié)序和小端字節(jié)序大端字節(jié)序和小端字節(jié)序浮點(diǎn)數(shù)在內(nèi)存的儲(chǔ)存浮點(diǎn)數(shù)在內(nèi)

目錄

數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)方式(補(bǔ)碼,反碼,原碼)

整形在內(nèi)存中的存儲(chǔ):

? ?整形類型

大端字節(jié)序和小端字節(jié)序

浮點(diǎn)數(shù)在內(nèi)存的儲(chǔ)存


數(shù)據(jù)在計(jì)算機(jī)的存儲(chǔ)方式(補(bǔ)碼,反碼,原碼)

在32位機(jī)器上,計(jì)算機(jī)儲(chǔ)存數(shù)據(jù)是用32個(gè)比特位來(lái)儲(chǔ)存數(shù)據(jù),也就是32個(gè)0,其中第一位數(shù)為符號(hào)位,大多數(shù)情況用來(lái)表示整數(shù)是正的還是負(fù)的,我們先從原碼說(shuō)起,1和-1的原碼分別為:

正數(shù)的反碼不變,負(fù)數(shù)的反碼在其原碼的基礎(chǔ)上符號(hào)位不變,其他位按位取反(0變成1,1變成0),即:

?正數(shù)的補(bǔ)碼還是不變,負(fù)數(shù)的補(bǔ)碼在其反碼的基礎(chǔ)上加1:

?所以我們可以總結(jié):正數(shù)的原碼,反碼和補(bǔ)碼都相同,而負(fù)數(shù)的原碼,反碼和補(bǔ)碼在轉(zhuǎn)換時(shí)才會(huì)不同,計(jì)算機(jī)在儲(chǔ)存整形時(shí)用的都是補(bǔ)碼。

整形在內(nèi)存中的存儲(chǔ):

? ?整形類型

我們知道C語(yǔ)言的整形類型有

我們知道char是字符類型,但是char類型儲(chǔ)存字符的方式也是儲(chǔ)存數(shù)字,然后在通過(guò)ascii碼表轉(zhuǎn)化為對(duì)應(yīng)的字符,所以在這里我也將char當(dāng)作是整形的一類了。

計(jì)算機(jī)會(huì)分配給不同類型不同的字節(jié)大小,也就是可以儲(chǔ)存數(shù)字的大?。?/p>

?對(duì)于不同整形無(wú)符號(hào)的問(wèn)題,我拿char舉個(gè)栗子

char類型的最大值和最小值在計(jì)算機(jī)的存儲(chǔ):

10000000~011111111? 10000000為-128(這是計(jì)算機(jī)規(guī)定的),111111111為-127,011111111為127,

所以大小范圍是-128到127

而無(wú)符號(hào)char類型,就是將最后一位符號(hào)位變成計(jì)算大小的位,即:

00000000~111111111=00000000~01111111+2^8,也就是0到255

大端字節(jié)序和小端字節(jié)序

在這里我們引入一下內(nèi)存單元的概念,內(nèi)存單元代表的是一個(gè)字節(jié)空間,即8個(gè)比特位,計(jì)算機(jī)會(huì)給這個(gè)內(nèi)存空間分配一個(gè)地址(其實(shí)就是指針)。

當(dāng)我們創(chuàng)建一個(gè)int變量,并且給他賦一個(gè)16進(jìn)制的值 0x11223344,那么計(jì)算機(jī)會(huì)給他連續(xù)開辟4個(gè)字節(jié)大小的空間,他會(huì)有4個(gè)內(nèi)存單元,接下來(lái)11將會(huì)被放在第一個(gè)內(nèi)存單元,22放在第二個(gè)內(nèi)存單元,下面也是一樣,那么計(jì)算機(jī)會(huì)怎么給這些內(nèi)存單元分配地址呢?于是就產(chǎn)生了大端字節(jié)序和小端字節(jié)序。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~兩位16進(jìn)制的范圍大小等于8個(gè)比特位的范圍大小?

大端字節(jié)序存儲(chǔ):高字節(jié)序的內(nèi)容放在低地址,低字節(jié)序的內(nèi)容放在高地址
小端字節(jié)序存儲(chǔ):高字節(jié)序的內(nèi)容放在高地址,低字節(jié)序的內(nèi)容放在低地址? ? ? ?

?其中:高字節(jié)序代表高位數(shù),即11,低字節(jié)序代表低位數(shù),

我們可以測(cè)試下自己的編譯器是大端的還是小端的,

#includeint main(){	int a = 0x11223344;	char* p = (char*)&a;	printf("%0x", *p);	return 0;}

如果運(yùn)行的結(jié)果為44,則為小端,11為大端

浮點(diǎn)數(shù)在內(nèi)存的儲(chǔ)存

根據(jù)國(guó)際標(biāo)準(zhǔn),任意一個(gè)二進(jìn)制浮點(diǎn)數(shù)都可以表示成:

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

(-1)^s表示符號(hào)位,-1的s次冪要么是正數(shù),要么是負(fù)數(shù)PM表示有效數(shù)字,M大于等于1,小于2;

2^E表示指數(shù)位。? ? ? ? ? ? ? ? ? ? ? ? ? ? -----總的來(lái)說(shuō)就是二進(jìn)制的科學(xué)計(jì)數(shù)法

?

浮點(diǎn)數(shù)在內(nèi)存的存儲(chǔ)其實(shí)就是S,M和E的存儲(chǔ)

單精度浮點(diǎn)型float:最高的一位是符號(hào)位s,接著的8位是指數(shù)E,剩下的23位為有效數(shù)字M

?其中,E的大小0~255

雙精度浮點(diǎn)型double:最高的一位是符號(hào)位s,接著的11位是指數(shù)E,剩下的52位為有效數(shù)字M

?其中E的大小0~2047

———————————————————————————————————————————

M的存儲(chǔ):

因?yàn)?<=M<2,所以M肯定為1.xxxxxxx,所以標(biāo)準(zhǔn)規(guī)定在計(jì)算機(jī)存儲(chǔ)M的時(shí)候,不儲(chǔ)存第一位數(shù)字1,當(dāng)讀取的時(shí)候才加上1,這樣做的目的是節(jié)省一位有效數(shù)字,使計(jì)算機(jī)保存更多其他有效數(shù)字。

———————————————————————————————————————————

E的存儲(chǔ):

首先,E在計(jì)算機(jī)的存儲(chǔ)肯定是一個(gè)無(wú)符號(hào)整形,這就意味著,當(dāng)E為11位,那它的大小范圍是0~2047,當(dāng)E是8位時(shí),它的大小范圍為0~255

但是我們知道,在科學(xué)計(jì)數(shù)法表數(shù)的示時(shí),它的指數(shù)位是可以取負(fù),所以科學(xué)家為了使得E表示負(fù)數(shù),在將E存儲(chǔ)前加上一個(gè)中間數(shù)字,8位的E的中間數(shù)位127,11位的E為1023,這樣在讀取的時(shí)候給E減去這個(gè)中間數(shù),在計(jì)算的時(shí)候E就能當(dāng)作負(fù)數(shù)帶來(lái)計(jì)算了。、

E的特殊情況

當(dāng)E全位0的時(shí)候,那么E的真實(shí)值位1-127(或者1-1023),接下來(lái)在計(jì)算的時(shí)候M不會(huì)再加1,因?yàn)镋為全0的時(shí)候算出來(lái)的數(shù)是無(wú)限接近于0的數(shù),所以干脆就不給M加1,便于表示+0和-0;

當(dāng)E全為1的時(shí)候,如果有效數(shù)字全為0,表示+無(wú)窮或者-無(wú)窮

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125631.html

相關(guān)文章

  • C語(yǔ)言基礎(chǔ)之操作符詳解

    摘要:語(yǔ)言基礎(chǔ)之操作符詳解操作符的分類算術(shù)操作符移位操作符位操作符邏輯操作符逗號(hào)表達(dá)式表達(dá)式求值隱式類型轉(zhuǎn)換算術(shù)轉(zhuǎn)換操作符的屬性今天就帶各位大佬來(lái)了解一波語(yǔ)言的操作符。 ...

    snowell 評(píng)論0 收藏0
  • 再識(shí)C語(yǔ)言(五)

    摘要:注不要移動(dòng)負(fù)數(shù)位標(biāo)準(zhǔn)未定義行為這種行為屬于標(biāo)準(zhǔn)未定義行為語(yǔ)言中并沒有規(guī)定移動(dòng)負(fù)數(shù)位。按進(jìn)制位與規(guī)則兩個(gè)二進(jìn)制數(shù),有則為,全則為。為假的時(shí)候,打印語(yǔ)言中表示假,非表示真無(wú)論是正數(shù)還是負(fù)數(shù)。 C語(yǔ)言操作符詳解 目錄 一、算術(shù)操作符 二、移位操作符 三、位操作符 四、賦值操作符 五、單目操作符 六...

    BigTomato 評(píng)論0 收藏0
  • C語(yǔ)言】從入門到入土(進(jìn)階之?dāng)?shù)據(jù)的存儲(chǔ)

    摘要:還不清楚原碼反碼補(bǔ)碼的可以到語(yǔ)言從入門到入土操作符篇中的移位操作符處學(xué)習(xí)一下。比如原碼反碼補(bǔ)碼原碼顯示值補(bǔ)碼數(shù)據(jù)存放內(nèi)存中其實(shí)存放的是補(bǔ)碼補(bǔ)碼的表示與存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)表示和存儲(chǔ)。 ...

    mcterry 評(píng)論0 收藏0
  • 請(qǐng)回答c語(yǔ)言-操作符【入門】

    摘要:操作符的兩個(gè)操作數(shù)必須為整數(shù)。函數(shù)調(diào)用用作為函數(shù)調(diào)用操作符。訪問(wèn)一個(gè)結(jié)構(gòu)的成員結(jié)構(gòu)體成員名結(jié)構(gòu)體指針成員名還是熟悉的栗子在之前的博客請(qǐng)回答語(yǔ)言初識(shí)語(yǔ)言下入門的結(jié)構(gòu)體出現(xiàn)過(guò)的栗子名字圖鑒編號(hào)身高重量屬性類型 ...

    frolc 評(píng)論0 收藏0
  • C語(yǔ)言進(jìn)階】??數(shù)據(jù)類型&amp;&amp;整型內(nèi)存中的存儲(chǔ)

    目錄 ? ?一、數(shù)據(jù)類型介紹 二、類型的意義 三、類型的基本歸類 整型家族 浮點(diǎn)數(shù)家族 構(gòu)造類型(自定義類型) 指針類型 空類型 四、整形在內(nèi)存中的存儲(chǔ) 原碼、反碼、補(bǔ)碼 大小端字節(jié)序 為什么有大端和小端? 一道經(jīng)典筆試題 ?一、數(shù)據(jù)類型介紹 數(shù)據(jù)從大的方向分為兩類: 內(nèi)置類型自定義類型內(nèi)置類型我們前面已經(jīng)學(xué)習(xí)過(guò),如下: char? ? ? ? ? ? //字符數(shù)據(jù)類型 short? ? ? ...

    Xufc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<