摘要:這里強(qiáng)調(diào)一下,之前講過一個(gè)操作符按位取反操作符,區(qū)別一下他倆,按位取反操作符是針對(duì)二進(jìn)制數(shù)每一位全部都取反,包括符號(hào)位。
小編是大一菜鳥不贅述,歡迎大佬指點(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)感謝支持!
現(xiàn)在是北京時(shí)間15:30,剛剛被一道簡(jiǎn)單的題折磨了半個(gè)下午,問題出在答案的輸出上,猶如困獸,心里面很惱火,覺得自己好菜好菜。天上沒下雨,但心情是灰色的(逐漸網(wǎng)抑云)
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)于他們的作用就不一一贅述了。
那首先要在調(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)直就是意義不明。
不論我們?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ù)深入研究。
說整數(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。
既然內(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í)來解決:
# include int 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
摘要:在符號(hào)位中,表示正,表示負(fù)。我們知道對(duì)于整型來說,內(nèi)存中存放的是該數(shù)的補(bǔ)碼。在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲(chǔ)。表示有效數(shù)字,。規(guī)定對(duì)于位的浮點(diǎn)數(shù),最高的位是 ...
摘要:友情提示先關(guān)注收藏,再查看,萬字保姆級(jí)語言從入門到精通教程。及大牛出天地開始有隨之乃有萬種語年英國劍橋大學(xué)推出了語言。 友情提示:先關(guān)注收藏,再查看,13 萬字保...
摘要:原始數(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)制語言,一般...
摘要:還不清楚原碼反碼補(bǔ)碼的可以到語言從入門到入土操作符篇中的移位操作符處學(xué)習(xí)一下。比如原碼反碼補(bǔ)碼原碼顯示值補(bǔ)碼數(shù)據(jù)存放內(nèi)存中其實(shí)存放的是補(bǔ)碼補(bǔ)碼的表示與存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲(chǔ)。 ...
摘要:語言深層理解函數(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) ...
閱讀 2678·2021-11-25 09:43
閱讀 2590·2021-11-22 09:34
閱讀 2860·2021-11-12 10:34
閱讀 1446·2021-10-20 13:46
閱讀 2308·2019-08-30 13:21
閱讀 937·2019-08-30 11:21
閱讀 492·2019-08-30 11:20
閱讀 2196·2019-08-29 17:20