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

資訊專欄INFORMATION COLUMN

C語言中數(shù)據(jù)的存儲(chǔ)

LeanCloud / 2677人閱讀

摘要:這里強(qiáng)調(diào)一下,之前講過一個(gè)操作符按位取反操作符,區(qū)別一下他倆,按位取反操作符是針對(duì)二進(jìn)制數(shù)每一位全部都取反,包括符號(hào)位。

傳統(tǒng)藝能?

小編是大一菜鳥不贅述,歡迎大佬指點(diǎn)江山(QQ:1319365055)
此前博客點(diǎn)我!點(diǎn)我!請(qǐng)搜索博主 【知曉天空之藍(lán)】點(diǎn)我!點(diǎn)我!請(qǐng)搜索博主 【知曉天空之藍(lán)】或掃碼進(jìn)入!
喬喬的gitee代碼庫(打灰人歡迎訪問,點(diǎn)我!

(https://blog.51cto.com)感謝支持!

過渡區(qū)?

現(xiàn)在是北京時(shí)間15:30,剛剛被一道簡(jiǎn)單的題折磨了半個(gè)下午,問題出在答案的輸出上,猶如困獸,心里面很惱火,覺得自己好菜好菜。天上沒下雨,但心情是灰色的(逐漸網(wǎng)抑云)

正片開始?

數(shù)據(jù)類型 ?

1.基本內(nèi)置類型:byte,int ,char, float, double

2.構(gòu)造數(shù)據(jù)類型:
數(shù)組類型;
結(jié)構(gòu)體類型:struct
共用體(聯(lián)合類型):union
枚舉類型:enum

3.指針類型 :int* p,char* p,float* p,void* p

4.空類型 : void(無類型),通常用于函數(shù)的返回類型,函數(shù)參數(shù)與指針類型。

構(gòu)造類型又叫自定義類型,在各自參數(shù)或者元素類型發(fā)生變化就會(huì)讓他徹頭徹尾的改變;而基本數(shù)據(jù)類型的特點(diǎn)就是不可以再分解為其他類型,基本類型就是自我說明,關(guān)于他們的作用就不一一贅述了。

內(nèi)存窗口?

那首先要在調(diào)試欄打開內(nèi)存窗口,并搞清楚怎么觀察內(nèi)存,這是必要的工具
1.地址欄

2.內(nèi)容

這些密密麻麻的就是內(nèi)存中的數(shù)據(jù),看到這里你可能就會(huì)疑惑,不是說內(nèi)存里存的都是二進(jìn)制數(shù)嗎,這些是什么鬼?是的,沒有錯(cuò),但是內(nèi)存窗口展示內(nèi)容有限,在有限的范圍內(nèi),他只能選擇以 16 進(jìn)制的形式展示出來,僅僅是展示而已。
3.文本

這個(gè)更是人不人鬼不鬼的其實(shí)是他根據(jù)內(nèi)存的數(shù)據(jù)簡(jiǎn)單的以文本的格式輸出其可能的內(nèi)容,無價(jià)值簡(jiǎn)直就是意義不明。

整型的存儲(chǔ)?

不論我們?cè)趯懘a時(shí)創(chuàng)建了個(gè)什么東西,他不會(huì)居于虛空,存在載體就會(huì)占用內(nèi)存,而空間的大小是根據(jù)我們創(chuàng)建的數(shù)據(jù)的類型而決定的,我們要回到問題最本質(zhì)的源頭,在開辟的內(nèi)存中到底如何去存儲(chǔ)數(shù)據(jù)?我們不廢話直接創(chuàng)建倆個(gè)變量看看便知

int main(){int a = 5;int b = -5;return 0;}

內(nèi)存窗口打開我們可以取地址查找 a,b 的數(shù)據(jù)存儲(chǔ)情況:


這里是不是感覺很奇怪,二者為何差異這么大?要搞清楚我們就要繼續(xù)深入研究。

原碼,反碼,補(bǔ)碼?

說整數(shù)的二進(jìn)制有三種表示方法:原碼,反碼,補(bǔ)碼。

整數(shù)分為正數(shù)和負(fù)數(shù),正負(fù)數(shù)的區(qū)別就在于他們二進(jìn)制32位數(shù)的最高位的 0和1代表著符號(hào)位,0為正,1為負(fù),其余才是有效位。

正數(shù)的原反補(bǔ)三碼合一,和他本身是一樣的。但是負(fù)數(shù)就花哨了,負(fù)數(shù)原碼是按照一個(gè)數(shù)的正,負(fù)直接寫出來的二進(jìn)制就是原碼。反碼在原碼基礎(chǔ)上,除開符號(hào)位進(jìn)行取反得到。這里強(qiáng)調(diào)一下,之前講過一個(gè)操作符:~(按位取反操作符),區(qū)別一下他倆,按位取反操作符是針對(duì)二進(jìn)制數(shù)每一位全部都取反,包括符號(hào)位。補(bǔ)碼則是反碼的基礎(chǔ)上+1得到,比如 -7 這個(gè)數(shù)的原反補(bǔ)分別為:

10000000 00000000 00000000 00000111 (原)
111111111 111111111 111111111 111111000(反)
111111111 111111111 111111111 111111001(補(bǔ))

b 的 -5 就是 00000000 00000000 00000000 00000101以補(bǔ)碼 11111111 11111111 11111111 11111011 每四個(gè)字節(jié)為一位化成16 進(jìn)制就是 0xfffffff3。

補(bǔ)碼的意義?

既然內(nèi)存中中存儲(chǔ)的是二進(jìn)制的補(bǔ)碼,我們現(xiàn)在不談現(xiàn)象談本質(zhì),為什么偏偏要是補(bǔ)碼呢?
我們要明白一件事就是計(jì)算機(jī)算減法是相對(duì)不容易的,因?yàn)镃PU里面沒有減法器,只有加法器,要算 1-1 時(shí)只能算作 1+(-1)。計(jì)算機(jī)用二進(jìn)制去計(jì)算時(shí),我們會(huì)發(fā)現(xiàn),當(dāng)用原碼或者反碼去計(jì)算根本行不通,只有補(bǔ)碼才可以實(shí)現(xiàn)。

由此看來,補(bǔ)碼的地位是絕對(duì)的老大哥,在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來存儲(chǔ),主要原因是:
1.統(tǒng)一了零的編碼
2.將符號(hào)位和其它位統(tǒng)一處理
3.將減法運(yùn)算轉(zhuǎn)變?yōu)榧臃ㄟ\(yùn)算
4.兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄

由這里看,加法和減法可以統(tǒng)一起來處理,此外補(bǔ)碼和原碼相互轉(zhuǎn)換時(shí),其運(yùn)算過程是相同的,不需要額外的硬件電路。

大小端模式

我昨天的博客專門講了大小端存儲(chǔ)模式專題,其實(shí)大小端的檢驗(yàn)也可以用今天的知識(shí)來解決:

# includeint check_s(){	int i = 1;	return (*(char*)&i);}int main(){	int ret = 0;	ret = check_s();	if (ret == 1)	{		printf("小端/n");	}	else	{		printf("大端/n");	}	return 0;

其結(jié)果:

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

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

相關(guān)文章

  • C語言進(jìn)階第一問:數(shù)據(jù)在內(nèi)存是如何存儲(chǔ)?(手把手帶你深度剖析數(shù)據(jù)在內(nèi)卒存儲(chǔ),超全解析,碼住不

    摘要:在符號(hào)位中,表示正,表示負(fù)。我們知道對(duì)于整型來說,內(nèi)存中存放的是該數(shù)的補(bǔ)碼。在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲(chǔ)。表示有效數(shù)字,。規(guī)定對(duì)于位的浮點(diǎn)數(shù),最高的位是 ...

    ghnor 評(píng)論0 收藏0
  • 13 萬字 C 語言從入門到精通保姆級(jí)教程2021 年版 (建議收藏)

    摘要:友情提示先關(guān)注收藏,再查看,萬字保姆級(jí)語言從入門到精通教程。及大牛出天地開始有隨之乃有萬種語年英國劍橋大學(xué)推出了語言。 友情提示:先關(guān)注收藏,再查看,13 萬字保...

    zombieda 評(píng)論0 收藏0
  • JavaScript基礎(chǔ)之數(shù)據(jù)類型

    摘要:原始數(shù)據(jù)類型和原始數(shù)據(jù)類型實(shí)在太簡(jiǎn)單,所以只簡(jiǎn)單劃幾個(gè)重點(diǎn)原始數(shù)據(jù)類型不可改變?cè)紨?shù)據(jù)類型一個(gè)非常重要的特征就是不可改變。引用數(shù)據(jù)類型這里的不是狹義的,包含的預(yù)定義引用類型,對(duì),這些都是引用數(shù)據(jù)類型。 JavaScript是腳本語言 計(jì)算機(jī)語言可以分為三類,機(jī)器語言、匯編語言、高級(jí)語言。高級(jí)語言又可以簡(jiǎn)單分為解釋類和編譯類。這個(gè)知道就夠了。 機(jī)器語言: 計(jì)算機(jī)所能識(shí)別的二進(jìn)制語言,一般...

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

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

    mcterry 評(píng)論0 收藏0
  • C語言深層理解:函數(shù)棧幀創(chuàng)建與銷毀

    摘要:語言深層理解函數(shù)中棧幀的創(chuàng)建與銷毀引言引言問題一引言問題二引言問題三一棧的簡(jiǎn)單認(rèn)識(shí)內(nèi)存的簡(jiǎn)單了解棧的簡(jiǎn)單了解棧的定義棧的結(jié)構(gòu)二寄存器與簡(jiǎn)單的匯編指令寄存器的定義寄存器的分類簡(jiǎn)單的匯編指令三棧幀的創(chuàng)建于銷毀調(diào)試調(diào)用堆棧調(diào) ...

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

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

0條評(píng)論

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