常見型別:
char 字元型原碼、反碼、補碼short 短整型
int 整型
long 長整型
long long 長長整型
float 單精度浮點型
double 雙精度浮點型
struct 結構體型別
enum 列舉型別
union 聯合型別
void 空型別
對於正數來說:
原碼、反碼、補碼都是一樣的(符號位為0)
對於負數來說:
原碼:二進位制數(符號位為1 )
反碼:原碼除符號位外,其餘位次按位取反
補碼:反碼+1
如:int -5在計算機系統中,數值一律用補碼來表示和儲存。原碼:1 0101
反碼:1 1010
補碼:1 1011
原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。
我們可以看到a,b在記憶體中儲存的形式都是以補碼的形式,但仔細看會發現,在實際生活中,a的16進製制與記憶體中儲存的順序不同,這就是由於大端小端的不同而產生的順序不同。
大端小端:
大端(儲存)模式:是指資料的低位儲存在記憶體的高位址中,資料的高位儲存在記憶體的低位址中;
小端(儲存)模式:是指資料的低位儲存在記憶體的低位址中,資料的高位儲存在記憶體的高位址中;
例: int a=1不論是大端還是小端,傳輸到網路上的順序都為轉換後的順序,即網路位元組序——大端,有其相應的函式進行轉化。0x:大端:| 00 | 00 | 00 | 01 |
小端 :| 01 | 00 | 00 | 00 |
判斷當前機器的位元組序:
#include
#include
bool check_mode()
intmain()
練習1:輸出結果為?
#include
#include
//32位小字節序處理器
void
main()
*s,a;
s =&a; s->i[0]
=0x39
; s->i[1]
=0x38
;printf
("%x\n"
, a.k)
;}
練習2:
#include
intmain()
結果:4294967168 (無符號整型 1111 1111 1111 1111 1111 1111 1000 0000)
練習3:
#include
void
main()
}
結果:迴圈輸出
常見浮點型別:float 、double 、long double。
根據國際標準ieee(電氣和電子工程協會) 754,任意乙個二進位制浮點數v可以表示成下面的形式:
例如:float f = 10.125;1010.001 --> 1.010001
(-1)^s * m * 2^e單精度浮點數儲存(32):s=0 , m=1.010001 , e=3
雙精度浮點數儲存(64):
對於上述例子中 f=10.125
如圖所示:
若e為8位,它的取值範圍為0~ 255;如果e為11位,它的取值範圍為0~2047。但是,我們知道,科學計數法中的e是可以出現負數的,所以ieee754規定,存入記憶體時e的真實值必須再加上乙個中間數,對於8位的e,這個中間數是127;對於11位的e,這個中間數是1023。因此,對於f來說,s=0,e=3 +127=130–> 1000 0010 ,m補齊32位。
練習:
float f = 12.5;
12.5—> 1100.1—>1.1001s=0;
e=3;
m=1.1001;
0 1000 0010 1001 0000 0000 0000 0000 000
即記憶體中儲存形式為:41 48 00 00
C語言筆記(資料在記憶體中的儲存)
資料型別詳細介紹 char 字元資料型別 short 短整型 int 整型 long 長整型 longlong 更長的整型 float 單精度浮點數 double 雙精度浮點數 型別的意義 1 使用型別開闢記憶體空間的大小 大小決定了使用範圍 2 如何看待記憶體空間的視角。型別的基本歸類 整型家族 ...
C語言筆記 陣列
筆記內容為自學郝斌老師c語言課程時所作 如果對於基礎知識點有遺忘可以借鑑下 遼寧工業大學 電子202 宋家盛 如有錯誤,可通過jff 16 163.com聯絡 陣列 陣列型別 陣列名 元素個數 例如 int a 2 元素表示 a 0 1 a 2 2 即a i 表示第i 1個元素 為什麼使用陣列?1....
HIVE學習筆記 資料儲存
基於hdfs 沒有專門的資料儲存格式 儲存結構主要包括 資料庫 檔案 表 檢視 可以直接載入文字檔案 txt csv等 建立表時,指定hive資料的列分隔符與行分隔符 表 內部表 分割槽表 外部表 桶表 內部表 與資料庫中的tale在概念上類似 每乙個table在hive中都有乙個相應的目錄儲存資料...