資料在記憶體中的儲存

2021-08-19 19:33:12 字數 2147 閱讀 4268

1.整形家族:

char

unsigned char

signed char

short

unsigned short(int)

signed short(int)

int unsigned int

signed int

long

unsigned long(int)

signed long(int)

2.浮點數家族:float

double

3.構造型別:

——陣列型別

——結構體型別 struct

——列舉型別 enum

——聯合型別 union

4.指標型別

5.空型別: void

一、整形在記憶體中的儲存

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

原碼:直接將二進位制按照正負數的形式翻譯成二進位制就可以。

反碼:將原碼的符號位不變,其他位依次按位取反就可以得到了。

補碼:反碼+1就得到補碼。

(正數的源、反、補碼都相同。)

大小端介紹:

大端模式——資料的低位儲存在記憶體的高位址中。

小端模式——資料的低位儲存在記憶體的低位址中。

符號位填充:

無符號數,填0

有符號數,填符號位

位元位填充時,看變數自身的型別。

#include int main()

上述**中,a,b為有符號數,輸出為-1

c為無符號數,而-1在記憶體中的儲存方式為1111 1111,換算為無符號數就是255;

#include int main()

上述**中,-128在記憶體中儲存方式為補碼。

原碼:   1000 0000

反碼:   1111 1111

補碼:1 0000 0000

(%u  無符號10進製整數)

#include int main()

上述**中,a有符號整數:

原碼:0000 0000 0000 0000 0000 0000 0001 0100

反碼:1111 1111 1111 1111 1111 1111 1110 1011

補碼:1111 1111 1111 1111 1111 1111 1110 1100

b為無符號整數:

補碼:0000 0000 0000 0000 0000 0000 0000 1010

a+b得:

1111 1111 1111 1111 1111 1111 1111 0110

轉換為十進位制

二、浮點數在記憶體中的儲存

因為任意浮點數都可以用科學記數法來表示

則任意浮點數v都可以表示為如方式:

s=0,v為正數,s=1,v為負數

m表示有效數字,大於等於1,小於2

e表示指數字

以上為32位的浮點數儲存模型

所以對於浮點數的儲存,就是對於s m e的儲存;

至於指數e:

首先,e為乙個無符號整數

因為科學記數法中的e可以為負數,所以ieee 754規定,e的真實值需加上乙個中間數;

對於8位的e,中間數為127

對於11位的e,中間數為1023

當e全為零,表示乙個無限接近0的數字

當e全為1,表示乙個無窮大(小)的數字

資料在記憶體中的儲存

身為乙個天天處理資料的人,不得不說資料在記憶體中的儲存是必須要知道的問題。首先,資料在記憶體中的儲存涉及到作用域,儲存位置等方面的問題。根據資料的作用域,可將資料劃分為區域性變數和全域性變數 區域性變數的作用域為從定義開始到函式執行結束 全域性變數的作用域從程式開始到程式結束。計算機的記憶體分配可以...

資料在記憶體中的儲存

大端,把乙個數字高位位元組序的內容儲存到低位址,低位位元組序內容儲存到高位址處 小端,把乙個數字高位位元組序的內容儲存到高位址,低位位元組序內容儲存到低位址處 判斷乙個機器是大端還是小端?指標判斷 int checksys 聯合體 共用體 union un int main 這裡首先需要知道的是,例...

資料在記憶體中的儲存

我們都知道在計算機中資料型別都有 char 1 short 2 int 4 long 4 8 float 4 double 8 等內建型別,以及他們所佔的空間大小。型別的意義 1.使用這個型別開闢記憶體空間的大小 大小決定使用範圍 2.如何看待記憶體空間的視角。型別歸類 整形家族 char unsi...