亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

LeanCloud / 2773人閱讀

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

傳統(tǒng)藝能?

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

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

過渡區(qū)?

現(xiàn)在是北京時間15:30,剛剛被一道簡單的題折磨了半個下午,問題出在答案的輸出上,猶如困獸,心里面很惱火,覺得自己好菜好菜。天上沒下雨,但心情是灰色的(逐漸網(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ā)生變化就會讓他徹頭徹尾的改變;而基本數(shù)據(jù)類型的特點就是不可以再分解為其他類型,基本類型就是自我說明,關(guān)于他們的作用就不一一贅述了。

內(nèi)存窗口?

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

2.內(nèi)容

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

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

整型的存儲?

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

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

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


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

原碼,反碼,補碼?

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

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

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

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

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

補碼的意義?

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

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

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

大小端模式

我昨天的博客專門講了大小端存儲模式專題,其實大小端的檢驗也可以用今天的知識來解決:

# 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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/125072.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    archieyang 評論0 收藏0

發(fā)表評論

0條評論

LeanCloud

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<