两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

  • 歡迎訪問(wèn)C語(yǔ)言網(wǎng)www.sztianhecheng.cn 比賽欄每月有獎(jiǎng)月賽!舉辦比賽聯(lián)系QQ:2045302297
  • 問(wèn)題反饋、粉絲交流 QQ群327452739 藍(lán)橋杯訓(xùn)練群:113766799 申請(qǐng)群時(shí)請(qǐng)備注排名里的昵稱(chēng)
  • C語(yǔ)言研究中心 為您提供有圖、有料、解渴的C語(yǔ)言專(zhuān)題! 歡迎討論!

C語(yǔ)言中整數(shù)的存儲(chǔ)形式

技術(shù)專(zhuān)題 CTO 15984次瀏覽 0個(gè)評(píng)論

學(xué)習(xí)這套教程之前,你需要:
本教程默認(rèn)你已經(jīng)具備基本的C語(yǔ)言語(yǔ)法知識(shí),具備基本的計(jì)算機(jī)理論和常識(shí),比如進(jìn)制、存儲(chǔ)的概念等,又透過(guò)事物看本質(zhì)的好奇心。
以上

這一節(jié)我們將主要學(xué)習(xí)整數(shù)在C語(yǔ)言中的表現(xiàn)形式,這將奠定大家C語(yǔ)言堅(jiān)實(shí)的基礎(chǔ),并且為大家今后從事逆向分析相關(guān)的工作時(shí)提供良好的知識(shí)鋪墊。
C語(yǔ)言中整形按大小可以細(xì)分int、short、long,又可以按符號(hào)分有符號(hào)和無(wú)符號(hào)等,又因C標(biāo)準(zhǔn)并未明確規(guī)定不同數(shù)據(jù)類(lèi)型的標(biāo)準(zhǔn)大小,而交由編譯器規(guī)定。故在不同系統(tǒng)、不同編譯器下大小不同,從存儲(chǔ)來(lái)說(shuō),最大的不同即在于有無(wú)正負(fù)號(hào),為了描述方便,便于理解,我們統(tǒng)一按照最常見(jiàn)的四字節(jié)為例(2字節(jié)和8字節(jié)也通用),按有符號(hào)整數(shù)和無(wú)符號(hào)整數(shù)兩類(lèi)講解。

無(wú)符號(hào)整數(shù)(unsigned int)

此類(lèi)整數(shù)最好理解,存儲(chǔ)時(shí),它們(unsigned int)的全部位數(shù)(比如int四個(gè)字節(jié),將占8*4=32個(gè)bit位)都用來(lái)表示數(shù)據(jù),即00000000 00000000 00000000 00000000 ~ 11111111 11111111 11111111 11111111 之間,而在內(nèi)存中,通常用8個(gè)十六進(jìn)制數(shù)表示,即四個(gè)二進(jìn)制數(shù)一組,十六進(jìn)制表示為0x00000000 ~ 0xFFFFFFFF。最大表示范圍十進(jìn)制為0~4294967295。
下面舉個(gè)例子以加強(qiáng)理解:
譬如十進(jìn)制數(shù)字5,對(duì)應(yīng)二進(jìn)制數(shù)為101,那么對(duì)應(yīng)二進(jìn)制表示為00000000 00000000 00000000 00000101 與我們最習(xí)慣的十進(jìn)制表示一樣,低位再右,向左進(jìn)位。左邊29位全為0。
對(duì)應(yīng)十六進(jìn)制表示則為0x00000005。
再譬如十進(jìn)制數(shù)字12,對(duì)應(yīng)二進(jìn)制數(shù)為1100,那么對(duì)應(yīng)二進(jìn)制表示為00000000 00000000 00000000 00001100 ,對(duì)應(yīng)十六進(jìn)制數(shù)為0x0x0000000C

有符號(hào)整數(shù)(int)

有符號(hào)數(shù)與無(wú)符號(hào)數(shù)的區(qū)別在于,最高一位也就是左邊第一位是用來(lái)表示符號(hào)的,而右邊31位表示數(shù)據(jù)。
左邊第一位用1表示負(fù)數(shù),用0表示正數(shù)
右邊31位數(shù)據(jù)即為0000000 00000000 00000000 00000000 ~ 1111111 11111111 11111111 11111111
對(duì)應(yīng)十六進(jìn)制數(shù)為0x00000000 ~ 0xFFFFFFFF ,其中正數(shù)部分為:0x00000000 ~ 0x7FFFFFFF,負(fù)數(shù)部分為:0x80000000 ~0xFFFFFFFF,其中0x00000000為0,0x80000000為最小負(fù)數(shù)。
對(duì)應(yīng)十進(jìn)制數(shù)則為-2147483648 ~ 2147483647

(到這里,如果您對(duì)數(shù)字的二進(jìn)制存儲(chǔ),包括原碼、補(bǔ)碼等不明白的話可以參考 int類(lèi)型在內(nèi)存中的存儲(chǔ)方式。)

實(shí)際學(xué)習(xí)、逆向分析過(guò)程中,我們?cè)诎l(fā)現(xiàn)有數(shù)據(jù)需要解釋為有符號(hào)整數(shù)時(shí),往往看十六進(jìn)制的最高位,是小于8,還是8及以上,如果8以下則為正數(shù),大于8則為負(fù)數(shù)。需要大家根據(jù)經(jīng)驗(yàn)結(jié)合上下文分析。
另一方面,了解整數(shù)的存儲(chǔ)結(jié)構(gòu),對(duì)于理解整數(shù)算數(shù)運(yùn)算過(guò)程中發(fā)生的進(jìn)位、溢出等問(wèn)題也有很好的幫助。比如程序:

C語(yǔ)言中整數(shù)的存儲(chǔ)形式

貌似為死循環(huán),但實(shí)際上i由于是有符號(hào)的,所以當(dāng)加到上限也就是0x7FFFFFFF時(shí),進(jìn)位就會(huì)變成0x80000000從而結(jié)束循環(huán)。

 

為了方便顯示結(jié)果,也可以加大i的值,運(yùn)行如下:

C語(yǔ)言中整數(shù)的存儲(chǔ)形式

大家可以自行上機(jī)測(cè)試實(shí)驗(yàn),感受整數(shù)的存儲(chǔ)規(guī)律。

 

以上

C語(yǔ)言網(wǎng)提供「C語(yǔ)言、C++、算法競(jìng)賽」在線課程,全部由資深研發(fā)工程師或ACM金牌大佬親授課,更科學(xué)、全面的課程體系,以在線視頻+在線評(píng)測(cè)的學(xué)習(xí)模式學(xué)習(xí),學(xué)練同步,拒絕理論派,真正學(xué)會(huì)編程!還有獎(jiǎng)學(xué)金等增值福利等你!

C語(yǔ)言網(wǎng), 版權(quán)所有丨如未注明 , 均為原創(chuàng)丨本網(wǎng)站采用BY-NC-SA協(xié)議進(jìn)行授權(quán) , 轉(zhuǎn)載請(qǐng)注明C語(yǔ)言中整數(shù)的存儲(chǔ)形式
喜歡 (24)
[jinyangH@aliyun.com]
分享 (0)
發(fā)表我的評(píng)論
取消評(píng)論
表情

Hi,您需要填寫(xiě)昵稱(chēng)和郵箱!

  • 昵稱(chēng) (必填)
  • 郵箱 (必填)