C語言 | 關于數(shù)據(jù)在計算機的存儲形式
接上篇:詳解C語言中,關于0的不同含義

上次我們說到0經(jīng)過位運算符~,按位取反之后,得到的結(jié)果是-1。以下呢就給大家具體的講解數(shù)據(jù)在計算機的存儲形式。

數(shù)據(jù)在計算機中都是以二進制的形式進行存儲的。
例如:十進制數(shù)320轉(zhuǎn)換成二進制數(shù):
320 = 1*2^8+1*2^6 = 0000 0001 0100 0000

(第一個問題:)
那么我們就會遇到在數(shù)據(jù)存儲中的第一個問題,負數(shù)怎么表示呢?
在基本數(shù)據(jù)類型中,我們又將數(shù)據(jù)分為有符號型和無符號型。無符號型很好理解,也就是可以直接表示正整數(shù),并且只能存儲正整數(shù)。有符號型的數(shù)據(jù),將最高位設為符號位,當最高位是0的時候,表示存儲的是一個正數(shù),最高位1的時候,表示存儲的就是一個負數(shù)。

例如:一個八位的長度的數(shù)據(jù)

0000 0001 = +1;
1000 0001 = -1;
現(xiàn)在知道了數(shù)據(jù)的表示方式,我們再來看看數(shù)據(jù)的運算。在計算機中,沒有減法運算,那么1-1對于計算機而言就是1+(-1)。我們來看一下根據(jù)計算機的存儲方式,來進行運算:
0000 0001 + 1000 0001 = 1000 0010 = -2;

我們可以看到1-1經(jīng)過剛剛的計算之后得到了-2的結(jié)果,難道是我們平常的認知出現(xiàn)問題啦?
當然不是,而是在計算機中數(shù)據(jù)雖然是以二進制的形式進行存儲,但數(shù)據(jù)并不是以原碼的形式進行存儲的,而是以補碼的形式存在于內(nèi)存中。

?更多知識點我們下次繼續(xù),未完待續(xù)......