一、資料型別可分為:
①內建型別
②自定義型別
(1)常見的內建型別:
char //字元資料型別
short //短整型
int //整形
long //長整型
long long //更長的整形
float //單精度浮點數
double //雙精度整形
(2)自定義型別:
陣列型別
結構體型別
列舉型別
二、型別的基本歸類
(1)整形家族
char(乙個位元組;4bit)
unsigned char:無符號型 (範圍:0—255)
signed char:有符號型 (最高位是符號位;1表示負數;0表示正數 ;範圍: -128—127)
short(兩個位元組;8bit)
unsigned short [int]
signed short [int]
int (四個位元組;32bit)
unsigned int
signed int
long (四個字;,32int)
unsigned long [int]
signed long [int]
(2)浮點型家族
float:單精度浮點型
double:雙精度浮點型
(3)指標型別
int *pi
char *pc
float *pf
void *pv
(4)空型別
void表示空型別(無型別)
通常用於函式的返回型別、函式的引數、指標型別
三、整形在記憶體中的儲存
資料以二進位制的反碼形式進行儲存
原碼:直接將整形按照正負數形式翻譯成二進位制
反碼:原碼符號位不變,其他位依次按位取反(二進位制最高位為符號位,0表示正數,1表示負數)
補碼:反碼+1得到補碼
正數的原碼、補碼、反碼都相同
四、資料的儲存順序
大端儲存模式:資料低位位元組序內容儲存在記憶體高位址中,資料的高位位元組序內容儲存在低位址中。
小端儲存模式:資料低位位元組序內容儲存在記憶體低位址中,資料的高位位元組序內容儲存在高位址中。
四、浮點型在記憶體中的儲存
根據國際標準ieee754,任何二進位制浮點數都可以表示成如下形式:
(-1)^s * m * 2^e
(-1)^s表示符號位;
s=0表示正數;
s=1表示負數
m表示有效數字,在[1,2)區間內
2^e是指數字
例:十進位制:5.5
二進位制:101.11
即(-1)^0 1.011 2^2
單精度浮點型資料的儲存形式
雙精度浮點型資料的儲存形式
補充:
ieee 754對有效數字m和指數e ,還有一些特別規定。前面說過,1sm<2 ,也就是說, m可以寫成1. ***xx的形式,其中***xx表示小數部分。
ieee 754規定,在計算機內部儲存m時,預設這個數的第一位總是1 ,因此可以被捨去,只儲存後面的***xx部分。比如儲存1.01的時候,只儲存01 ,等到讀取的時候,再把第一位的1加上去。 這樣做的目的,是節省1位有效數字。以32位浮點數為例,留給m只有23位,將第一位的1捨去以後 ,等於可以儲存24位有效數字。
至於指數e ,情況就比較複雜。
首先,e為乙個無符號整數( unsigned int )這意味著,如果e為8位,它的取值範圍為0~ 255 ;如果e為11位,它的取值範圍為0~2047。但是,我們知道,科學計數法中的e是可以出現負數的,所以ieee 754規定,存入記憶體時e的真實值必須再加_上乙個中間數,對於8位的e ,這個中間數是127 ;對於11位的e ,這個中間數是1023。比如, 2^10的e是10,所以儲存成32位浮點數時,必須儲存成10+127=137 ,即10001001。
然後,指數e從記憶體中取出還可以再分成三種情況:
e不全為0或不全為1
這時,浮點數就採用下面的規則表示,即指數e的計算值減去127 (或1023) , 得到真實值,再將有效數字m前加上第一-位的1。比如: 0.5( 1/2 )的二進位制形式為0.1 ,由於規定正數部分必須為1 ,即將小數點右移1位,則為1.0*2^(-1) ,其階碼為-1+127=126 ,表示為01111110 ,而尾數1 .0去掉整數部分為0 ,補齊0到23位000000000000000000000 ,則其二進位制表示形式為:
0 01111110 00000000000000000000000
e全為0
這時 ,浮點數的指數e等於1-127 (或者1-1023 )即為真實值,有效數字m不再加上第一位的1 , 而是還原為0.***xx的小數。這樣做是為了表示+0 ,以及接近於0的很小的數字。
e全為1
這時 ,如果有效數字m全為0 ,表示無窮大(正負取決於符號位s)
資料在記憶體中的儲存
身為乙個天天處理資料的人,不得不說資料在記憶體中的儲存是必須要知道的問題。首先,資料在記憶體中的儲存涉及到作用域,儲存位置等方面的問題。根據資料的作用域,可將資料劃分為區域性變數和全域性變數 區域性變數的作用域為從定義開始到函式執行結束 全域性變數的作用域從程式開始到程式結束。計算機的記憶體分配可以...
資料在記憶體中的儲存
大端,把乙個數字高位位元組序的內容儲存到低位址,低位位元組序內容儲存到高位址處 小端,把乙個數字高位位元組序的內容儲存到高位址,低位位元組序內容儲存到低位址處 判斷乙個機器是大端還是小端?指標判斷 int checksys 聯合體 共用體 union un int main 這裡首先需要知道的是,例...
資料在記憶體中的儲存
我們都知道在計算機中資料型別都有 char 1 short 2 int 4 long 4 8 float 4 double 8 等內建型別,以及他們所佔的空間大小。型別的意義 1.使用這個型別開闢記憶體空間的大小 大小決定使用範圍 2.如何看待記憶體空間的視角。型別歸類 整形家族 char unsi...