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...