目錄

前言
一.C語(yǔ)言的基本數(shù)據(jù)類型介紹
? 1.1整形家族
?編輯
1.2浮點(diǎn)型家族
? 1.3指針類型
? 1.4構(gòu)造類型
? 1.5空類型void?
二.整形在內(nèi)存中的存儲(chǔ)
2.1原碼,反碼,補(bǔ)碼
? 2.2大小端的介紹
三. 浮點(diǎn)數(shù)的存儲(chǔ)
3.1舉一個(gè)例子
3.2浮點(diǎn)數(shù)存儲(chǔ)規(guī)則
3.3解釋例題
四.結(jié)語(yǔ):
新年的第一篇博客,記錄一下新一年的學(xué)習(xí)8。
大家都知道數(shù)據(jù)在計(jì)算機(jī)中是用二進(jìn)制進(jìn)行存儲(chǔ)的,一個(gè)字節(jié)由8位二進(jìn)制數(shù)組成。那數(shù)據(jù)在C語(yǔ)言存儲(chǔ)的細(xì)節(jié)是怎么樣的呢?這篇文章就帶大家討論這個(gè)問題。
一.C語(yǔ)言的基本數(shù)據(jù)類型介紹 ? ? ? ? 1.1整形家族
在windows64位系統(tǒng)中,long long 占8個(gè)字節(jié),long占4個(gè)字節(jié),int占4個(gè)字節(jié),short占2個(gè)字節(jié),char占1個(gè)字節(jié)。
為什么要把char歸入整形家族呢?因?yàn)樽址麛?shù)據(jù)在c語(yǔ)言中本質(zhì)儲(chǔ)存的ASCII碼,而ASCII碼是整數(shù),所以存儲(chǔ)方式與整數(shù)一致。
1.2浮點(diǎn)型家族
在windows64位系統(tǒng)中,float占4個(gè)字節(jié),double占8個(gè)字節(jié)。
? 1.3指針類型
指針類型(當(dāng)然指針類型不只這些,這里沒有列舉完)?,在64位系統(tǒng)下占8個(gè)字節(jié),32位系統(tǒng)下占4個(gè)字節(jié)。
? 1.4構(gòu)造類型
這些類型的存儲(chǔ)要根據(jù)內(nèi)部的數(shù)據(jù)類型計(jì)算,這里就不做詳細(xì)描述
? 1.5空類型void?void表示無類型(空類型)。
通常應(yīng)用于函數(shù)的返回類型、函數(shù)的參數(shù)、指針類型。什么是原碼呢?
原碼就是整數(shù)直接轉(zhuǎn)換成二進(jìn)制后形成的二進(jìn)制序列。如下圖所示。

因?yàn)閍是int類型,int類型由4個(gè)字節(jié)組成,所以它轉(zhuǎn)換成二進(jìn)制后的源碼應(yīng)該由32位二進(jìn)制組成。
在C語(yǔ)言的規(guī)定中,正整數(shù)的原碼、反碼、補(bǔ)碼是相同的。
PS:它是怎么知道正負(fù)的呢?在c語(yǔ)言中,數(shù)據(jù)的原碼首位字符代表正負(fù)(0為正,-1為負(fù))。

看完了正數(shù)的原反補(bǔ),現(xiàn)在我們來看負(fù)數(shù)。
負(fù)數(shù)的原碼與整數(shù)一樣,都是由數(shù)字轉(zhuǎn)化為二進(jìn)制得到,與正數(shù)不同的是,它的第一位是1,也就是符號(hào)位為1。
它的反碼怎么得來呢?
負(fù)數(shù)的反碼由原碼轉(zhuǎn)化而來,規(guī)則是:符號(hào)位不變,其他位依次按位取反得到。補(bǔ)碼則是反碼加一得到。
但是數(shù)據(jù)中為什么要存在原碼、反碼、補(bǔ)碼呢?
在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲(chǔ)。原因在于,使用補(bǔ)碼,可以將符號(hào)位和數(shù)值域統(tǒng) 一處理; 同時(shí),加法和減法也可以統(tǒng)一處理( CPU 只有加法器 )此外,補(bǔ)碼與原碼相互轉(zhuǎn)換,其運(yùn)算過程 是相同的,不需要額外的硬件電路。 原因如下圖所示:

我們也可以驗(yàn)證一下,我這里查看的是VS2022中的內(nèi)存存儲(chǔ)。

但是我們看到內(nèi)存存儲(chǔ)的順序又存在一些問題,它好像是倒著存儲(chǔ)的。
這又是什么原因呢??
? 2.2大小端的介紹什么是大小端:
大端(存儲(chǔ))模式,是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的低地址 中; 小端(存儲(chǔ))模式,是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位 , ,保存在內(nèi)存的高地 址中。
PS:0x就是十六進(jìn)制的意思。
這里我們可以看到數(shù)據(jù)的存儲(chǔ)是倒著存的。
這里的11是低位數(shù)據(jù)存在低地址處,44是高位數(shù)據(jù)存在高地址處。
便于記憶可以簡(jiǎn)單的理解為,小端是倒著存,大端是正著存。
三. 浮點(diǎn)數(shù)的存儲(chǔ) 3.1舉一個(gè)例子

為什么會(huì)出現(xiàn)這樣的情況呢?
3.2浮點(diǎn)數(shù)存儲(chǔ)規(guī)則 根據(jù)國(guó)際標(biāo)準(zhǔn) IEEE (電氣和電子工程協(xié)會(huì)) 754 ,任意一個(gè)二進(jìn)制浮點(diǎn)數(shù) V 可以表示成下面的形式: (-1)^S * M * 2^E PS: (-1)^S 表示符號(hào)位,當(dāng) S=0 , V 為正數(shù);當(dāng) S=1 , V 為負(fù)數(shù)。 M 表示有效數(shù)字,大于等于 1 ,小于 2 。 2^E 表示指數(shù)位。 這個(gè)是什么意思呢? 這里舉個(gè)例子比如5.5可以表示為:(-1)^0*1.011*2^2 這個(gè)算式怎么的出來的呢? 首先把5.5轉(zhuǎn)化為二進(jìn)制101.1 再轉(zhuǎn)化成科學(xué)計(jì)數(shù)法表示也就是1.011*2^2

IEEE 754對(duì)有效數(shù)字M和指數(shù)E,還有一些特別規(guī)定?
因?yàn)樵诟↑c(diǎn)數(shù)中M永遠(yuǎn)都是大于等于1小于2的,所以E最前面的1沒有必要存儲(chǔ),這樣可以多一位精度。
至于指數(shù) E ,情況就比較復(fù)雜。 首先, E 為一個(gè)無符號(hào)整數(shù)( unsigned int ) 這意味著,如果 E 為 8 位,它的取值范圍為 0~255 ;如果 E 為 11 位,它的取值范圍為 0~2047 。但是,我們 知道,科學(xué)計(jì)數(shù)法中的E 是可以出 現(xiàn)負(fù)數(shù)的,所以 IEEE 754 規(guī)定,存入內(nèi)存時(shí) E 的真實(shí)值必須再加上一個(gè)中間數(shù),對(duì)于 8 位的 E ,這個(gè)中間數(shù) 127;對(duì)于 11 位的 E ,這個(gè)中間 數(shù)是 1023 。比如, 2^10 的 E 是 10 ,所以保存成 32 位浮點(diǎn)數(shù)時(shí),必須保存成 10+127=137 ,即 10001001 。 也就說在存儲(chǔ)E時(shí)要加上127再進(jìn)行存儲(chǔ)。 其次就是E如果為全1或者全0如果E為全一為無窮大(正無窮與負(fù)無窮),如果E為全0代表無窮小(無限接近于0)
如果E中有1也有0,那就正常計(jì)算即可。
3.3解釋例題

數(shù)據(jù)的存儲(chǔ)就講完了,如果有哪里講的不嚴(yán)謹(jǐn),歡迎大家來討論。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱:數(shù)據(jù)內(nèi)存在C語(yǔ)言中的存儲(chǔ)-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article2/hhgic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容