資料型別介紹以及資料在記憶體中的儲存

2021-08-19 13:32:12 字數 2935 閱讀 6663

常見的資料型別有以下幾種:

int

char

short

long

float

double

為什麼要給資料定義不同的型別呢?

因為不同型別的資料開闢的記憶體空間不一樣大,這樣有利於節省記憶體

所謂型別,就是對資料分配存貯單元的安排,包括儲存單元的長度(佔多少個位元組)以及資料的儲存形式。不同的型別分配不同的長度和儲存形式

整型資料

整形資料的分類

(1)基本整型(int型)

編譯系統一般會給int型資料4個位元組,和long int 在記憶體中的表示是一樣的

(2)短整型(short型)

short型一般占用兩個位元組,儲存方式與int相同,短整型變數的值的範圍是-32768~32767

(3)長整型(long int型)

long int 型也就是long型,在記憶體中占用4個位元組,長整型變數的值的範圍是-2^31~(2^31-1)即-2147483648~2147483647

整形資料的儲存

整型在記憶體中的儲存是以該數的二進位制形式儲存的,正數的原反補碼是一樣的,對於負數來說就應該先求出負數的補碼。負數求補碼的方法:先將此數寫成二進位制的形式,然後對二進位制數除符號位按位取反,最後再加一。

在計算機系統中,數值一律用補碼來儲存儲存和表示,因為補碼可以將符號位和數值域統一處理,同時,加法減法也可以同時處理。

舉個栗子:

5的原碼:00000000 00000000 00000000 00000101

5的反碼:00000000 00000000 00000000 00000101

5的補碼:00000000 00000000 00000000 00000101

-5的原碼:10000000 00000000 00000000 00000101

-5的反碼:11111111 11111111 11111111  11111010

-5的補碼:11111111 11111111 11111111 11111011

從上面的可以看出a和b儲存的都是補碼,但是順序和我們預期的不太一樣

下面介紹一下儲存順序問題:大小端

大端儲存模式(大端位元組序):乙個資料的低位的內容放在高位址處,高位放在低位址處。

正著存

小端儲存模式(小端位元組序):乙個資料的低位的內容放在低位址處,高位放在高位址處。

倒著存

浮點型資料

(1)float型(單精度浮點型)

單精度浮點型一般占用四個位元組,數值以二進位制形式儲存,在儲存時系統將資料分成小數部分和指數部分兩個部分。c語言編譯系統中以24位表示小數部分(包括符號),以8位表示指數部分(包括指數的符號)

舉個栗子:

十進位制的5.0     寫成二進位制為:101.0 相當於1.01*2^2

所以,s為符號位小數部分的符號位是0,m是小數部分是1.01,e是指數部分是2

m是小數部分,也稱尾數,規定尾數的整數部分恒為1,表示為二進位制為1.01*2^2,指數為2,所以127+2=129,129表示成二進位制為1000 0001,所以指數部分為1000 0001,小數部分將其整數去掉為01,後面補0至23位,即為010 0000 0000 0000 0000 0000

在記憶體中驗證

再將二進位制轉換成十六進製制

小端儲存模式,所以就可以和記憶體中的儲存一模一樣,以上說的是單精度浮點型儲存到記憶體中,若是將記憶體中的儲存解析出來就用上面思想的逆向思維即可,

記憶體中的十六進製制數先轉化成二進位制,00 00 a0 40轉化成01000000 10100000 00000000 00000000

再將二進位制數劃分為三部分,符號位是0表示正數,接下來的八位指數部分是1000 0001即為129,129-127=2,所以指數部分為2

剩下的23位010 0000 0000 0000 0000 0000,去掉之前補上的0,小數部分有效的數為01,加上小數部分的整數字1,所以小數部分為1.01

綜上:這個浮點數為1.01*2^2,即為101,所以浮點數的整數部分是5,後面沒有小數部分,而且是浮點型資料,就用0補充,所以化為十進位制即為5.0

(2)double型(雙精度浮點型)

double型一般占用8個位元組指數部分占用11個bit,小數部分佔52個bit,把上圖進行擴充即可

(3)long double型(長雙精度)

不同編譯系統對long double的處理是不一樣的,具體情況具體分析

float,double資料型別在記憶體中的儲存方式

float在記憶體中用四個byte表示 符號位 sign 指數字 exponent 尾數 mantissa 1 bit 8 bits 23 bits 符號位 1正0負 指數字 範圍從0 255,但實際的指數等於這裡的指數減去127,所以真正的指數範圍從 127 128。尾數 23bit的尾數實際上表...

float資料型別在記憶體中的儲存方式

我們都很熟悉int型別在記憶體中的儲存方式,即直接按照二進位制方式儲存。我們可以通過以下c語言 讀取到記憶體中實際是如何儲存這些數字的。int main 首先解釋為什麼是從 p 3 從大到小逐個輸出 這是因為我們生活中用的電腦都是以小端模式來儲存資料的,即資料的高位元組儲存在記憶體的高位址中,而資料...

js中的資料型別,以及如何檢測資料型別

基本資料型別 string,number,boolean,null,undefined,symbol 引用資料型別 object array,function.常用的檢測資料型別的方法一般有以下三種 1.typeof 一般主要用來檢測基本資料型別,因為它檢測引用資料型別返回的都是object 還需要...