C語言修煉之路數(shù)據(jù)類型悟正法?解析存儲(chǔ)定風(fēng)魔上篇

(壹) 數(shù)據(jù)類型介紹
前面我們已經(jīng)學(xué)習(xí)了基本的內(nèi)置類型,以及他們所占存儲(chǔ)空間的大小。:

類型的意義:
- 使用這個(gè)類型開辟內(nèi)存空間的大?。ù笮Q定了使用范圍)。
- 如何看待內(nèi)存空間的視角。
1.1 類型的基本歸類
整形家族:

浮點(diǎn)數(shù)家族:

構(gòu)造類型:

指針類型

空類型:


(貳)整形在內(nèi)存中的存儲(chǔ)
我們之前講過一個(gè)變量的創(chuàng)建是要在內(nèi)存中開辟空間的。
空間的大小是根據(jù)不同的類型而決定的。
那接下來我們談?wù)剶?shù)據(jù)在所開辟內(nèi)存中到底是如何存儲(chǔ)的?
比如:

我們知道為a分配四個(gè)字節(jié)的空間。 那如何存儲(chǔ)?
2.1 原碼、反碼、補(bǔ)碼
計(jì)算機(jī)中的有符號(hào)數(shù)(整數(shù))有三種表示方法,即原碼、反碼和補(bǔ)碼。
三種表示方法均有符號(hào)位和數(shù)值位兩部分,符號(hào)位都是用0表示“正”,用1表示“負(fù)”,而數(shù)值位三種表示方法各不相同。






2.2 深入解析
正數(shù)的原、反、補(bǔ)碼都相同。
對(duì)于整形來說:數(shù)據(jù)存放內(nèi)存中其實(shí)存放的是補(bǔ)碼。

為什么呢?

舉例解析1:


舉例解析2
了解一下計(jì)算機(jī)的底層概念,我們?nèi)四X可以很輕松的知道機(jī)器數(shù)的第一位是符號(hào)位,但對(duì)于計(jì)算機(jī)基礎(chǔ)電路設(shè)計(jì)來說判別第一位是符號(hào)位是非常難和復(fù)雜的事情,為了讓計(jì)算機(jī)底層設(shè)計(jì)更加簡(jiǎn)單,人們開始探索將符號(hào)位參與運(yùn)算,并且采用只保留加法的方法,我們知道減去一個(gè)數(shù),等于加上這個(gè)數(shù)的負(fù)數(shù),即:1-1 = 1 + (-1) = 0,這樣讓計(jì)算機(jī)運(yùn)算就更加簡(jiǎn)單了,并且也讓符號(hào)位參與到運(yùn)算中去。


因?yàn)檠a(bǔ)碼能多存儲(chǔ)一個(gè)-128,而且在計(jì)算機(jī)底層中存儲(chǔ)的是補(bǔ)碼,所以在計(jì)算機(jī)中一個(gè)8位的二進(jìn)制數(shù)的存儲(chǔ)范圍是用補(bǔ)碼表示的[-128,127],而不是用原碼或反碼表示的[-127,127]。這也可以解釋為什么計(jì)算機(jī)中一個(gè)字節(jié)的取值范圍是[-128,127]。
這樣也能夠回答我們開始提出的問題了,原碼、反碼、補(bǔ)碼的使用,是人們?yōu)榱俗尫?hào)位能參與運(yùn)算并讓計(jì)算機(jī)底層運(yùn)算更加簡(jiǎn)單而設(shè)計(jì)出來的數(shù)據(jù)存儲(chǔ)表示方式。


到此這篇關(guān)于C語言修煉之路數(shù)據(jù)類型悟正法 解析存儲(chǔ)定風(fēng)魔上篇的文章就介紹到這了,更多相關(guān)C語言 數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C語言修煉之路數(shù)據(jù)類型悟正法 解析存儲(chǔ)定風(fēng)魔下篇
- C語言入門之淺談數(shù)據(jù)類型和變量常量
- 詳解C語言的基本數(shù)據(jù)類型
- C語言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解
- C語言數(shù)據(jù)類型枚舉enum全面詳解示例教程
- C語言中的浮點(diǎn)數(shù)據(jù)類型
- C語言入門篇--初識(shí)C語言及數(shù)據(jù)類型
- C語言自定義數(shù)據(jù)類型的結(jié)構(gòu)體、枚舉和聯(lián)合詳解
- C語言實(shí)現(xiàn) 數(shù)據(jù)類型占多少字節(jié)指針占多少字節(jié)
相關(guān)文章
解析C++浮點(diǎn)數(shù)無效值的定義與無效值判定的小結(jié)
本篇文章是對(duì)C++中浮點(diǎn)數(shù)無效值的定義與無效值的判定進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
使用C++實(shí)現(xiàn)Range序列生成器的示例代碼
在C++編程中,經(jīng)常需要迭代一系列數(shù)字或其他可迭代對(duì)象,本文將使用C++來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Range封裝,文中的示例代碼講解詳細(xì),感興趣的可以了解下2023-11-11
好用的C++ string Format“函數(shù)”介紹
大家好,本篇文章主要講的是好用的C++ string Format“函數(shù)”介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
Qt中PaintEvent繪制實(shí)時(shí)波形圖的實(shí)現(xiàn)示例
本文主要介紹了Qt中PaintEvent繪制實(shí)時(shí)波形圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C語言嵌入式實(shí)現(xiàn)支持浮點(diǎn)輸出的printf示例詳解
這篇文章主要為大家介紹了C語言嵌入式實(shí)現(xiàn)支持浮點(diǎn)輸出的printf示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
C語言數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的建立與基本操作
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu) 雙向鏈表的建立與基本操作的相關(guān)資料,需要的朋友可以參考下2017-03-03
C語言數(shù)據(jù)結(jié)構(gòu)遞歸之斐波那契數(shù)列
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)遞歸之斐波那契數(shù)列的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10

