int型別在記憶體中的儲存方式

2021-07-08 16:55:00 字數 666 閱讀 6068

此文為個人作為初學者的學習記錄

q1:int型別在記憶體中是以何種方式儲存的?

要解決這個問題,我們需要首先比較深入地理解下int型別。

那麼是不是實現了上面已經提到的int型別的深入理解,我們就可以知道記憶體中int型別的資料表達了呢?

比如int型別的數字「-1」,按照上面的理解方式,在記憶體中32個位元位上應該是這樣子的:10000000 00000000 00000001,左邊第乙個1表示負號,後面31位表示數值部分「1」。實際情況並不是這樣。這裡就需要引入「補碼」這個概念了。

q2:什麼是「補碼」?

要回到這個問題,得額外補充兩個概念,「原碼」和「反碼」。

通過以上兩個問題q1和q2的回答和引申,我們已經知道int型別在記憶體中儲存的方式,即int型別在記憶體中,以補碼的形式儲存。而且我們還知道了為何int型別的取值範圍中負數的最小值的絕對值比正數的最大值大1的原因,即-2^31的補碼是1000000000000000 00000000,原本-0的位置被-2^31取代了。

型別在記憶體中的儲存

在32位平台中 char 1個位元組也就是8個位元位 short 2個位元組 int 4個位元組 long 4個位元組 long long 8個位元組 float 4個位元組 double 8個位元組 型別的歸類 資料型別 char,shrot,int,long,long long都為整型 char...

float,double在記憶體中的儲存方式

將17.625換算成 float型。首先,將17.625換算成二進位制位 10001.101 0.625 0.5 0.125,0.5即 1 2,0.125即 1 8 如果不會將小數部分轉換成二進位制,請參考其他書籍。再將 10001.101 向右移,直到小數點前只剩一位 成了 1.0001101 x...

資料在記憶體中的儲存方式

之前在面試的時候有遇到乙個面試題 記憶體中的顯示 輸入出其實這就是little endian 小端序列 的儲存形式 比方說我有乙個0xa5b1的乙個資料。如果當前的機器是小端序列那麼在 記憶體中高位位址 存放的就是a5 example 0x40000001 記憶體中低位位址 存放的就是b1 exam...