首頁 > 軟體

C語言修煉之路資料型別悟正法 解析儲存定風魔上篇

2022-02-26 19:00:40

(壹) 資料型別介紹

前面我們已經學習了基本的內建型別,以及他們所佔儲存空間的大小。:

型別的意義: 

  • 使用這個型別開闢記憶體空間的大小(大小決定了使用範圍)。
  • 如何看待記憶體空間的視角。

1.1  型別的基本歸類

整形家族:

浮點數家族:

 構造型別:

 指標型別

空型別: 

(貳)整形在記憶體中的儲存

我們之前講過一個變數的建立是要在記憶體中開闢空間的。

空間的大小是根據不同的型別而決定的。

那接下來我們談談資料在所開闢記憶體中到底是如何儲存的?

比如:

我們知道為a分配四個位元組的空間。 那如何儲存? 

2.1  原碼、反碼、二補數

計算機中的有符號數(整數)有三種表示方法,即原碼、反碼和二補數。

三種表示方法均有符號位和數值位兩部分,符號位都是用0表示“正”,用1表示“負”,而數值位三種表示方法各不相同。

2.2  深入解析

正數的原、反、二補數都相同。

對於整形來說:資料存放記憶體中其實存放的是二補數。 

為什麼呢?

舉例解析1:

舉例解析2

瞭解一下計算機的底層概念,我們人腦可以很輕鬆的知道機器數的第一位是符號位,但對於計算機基礎電路設計來說判別第一位是符號位是非常難和複雜的事情,為了讓計算機底層設計更加簡單,人們開始探索將符號位參與運算,並且採用只保留加法的方法,我們知道減去一個數,等於加上這個數的負數,即:1-1 = 1 + (-1) = 0,這樣讓計算機運算就更加簡單了,並且也讓符號位參與到運算中去。

因為二補數能多儲存一個-128,而且在計算機底層中儲存的是二補數,所以在計算機中一個8位元的二進位制數的儲存範圍是用二補數表示的[-128,127],而不是用原碼或反碼錶示的[-127,127]。這也可以解釋為什麼計算機中一個位元組的取值範圍是[-128,127]。

這樣也能夠回答我們開始提出的問題了,原碼、反碼、二補數的使用,是人們為了讓符號位能參與運算並讓計算機底層運算更加簡單而設計出來的資料儲存表示方式。

到此這篇關於C語言修煉之路資料型別悟正法 解析儲存定風魔上篇的文章就介紹到這了,更多相關C語言 資料型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com