c語言中的數據型別
char //字元數據型別 1個位元組
short //短整型 2個位元組
int //整形 4個位元組
long //長整型 32位元機4個位元組 64位元機8個位元組
long long //更長的整形 8個位元組
float //單精度浮點數 4個位元組
double //雙精度浮點數 8個位元組
型別的意義:
1. 使用這個型別開闢記憶體空間的大小(大小決定了使用範圍)。
2. 如何看待記憶體空間的視角。
各個型別的取值範圍:
一個位元組等於8個bit位,也就表示8位元二進制數
有符號型別的第一個bit位爲符號位,1表示負數,0表示正數
char // -128~127
unsigned char // 0~255
short // -32768~32767
unsigned short // 0~65535
int // -2147483648~2147483647
unsigned int // 0~4294967295
原碼、反碼、二補數
計算機中的有符號數有三種表示方法,即原碼、反碼和二補數。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。
原碼: 直接將二進制按照正負數的形式翻譯成二進制就可以。
反碼: 將原碼的符號位不變,其他位依次按位元取反就可以得到了。
二補數: 反碼+1就得到二補數。 正數的原、反、二補數都相同。
對於整形來說:數據存放記憶體中其實存放的是二補數。
在計算機系統中,數值一律用二補數來表示和儲存。原因在於,使用二補數,可以將符號位和數值域統一處理; 同時,加法和減法也可以統一處理(CPU只有加法器)此外,二補數與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。
大端(儲存)模式,是指數據的低位儲存在記憶體的高地址中,而數據的高位,儲存在記憶體的低地址中;
小端(儲存)模式,是指數據的低位儲存在記憶體的低地址中,而數據的高位,,儲存在記憶體的高地址中。
大端模式與小端模式的判斷:
#include <stdio.h>
int check_sys()
{
int i = 1;
return (*(char *)&i);
}
int main()
{
int ret = check_sys();
if(ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}