深度解析資料在記憶體中的儲存

2021-09-10 15:46:34 字數 2295 閱讀 2759

//整形家族

char

//字元資料型別

short

//短整形

int//整形

long

//長整形

long

long

//更長的整形

//浮點數家族

float

//單精度浮點數

double

//雙精度浮點型

//它們的大小決定了使用範圍,根據不同的型別開闢相應的記憶體空間。

//構造型別:

1.陣列型別

2.結構體型別 struct

3.列舉型別 enum

4.聯合型別 union

#include

intmain()

a b的輸出比較好理解,但c可以來算一下

10000001 -1的原碼

11111110 -1的反碼

11111111 -1的補碼

當乙個無符號1位元組的整形以%d 輸出時就涉及到整形提公升(表示式中的字元和短整形運算元在使用之前被轉換為普通整形 32bit位),所有-1輸出是在它前面加上符號位,有符號就加1,無符號就加0,直到補齊到32bit位,即變成 0000 0000 0000 0000 0000 0000 11111111,依據整形來說就是2^8-1=255

2.

#include

intmain()

分析:char型別1個位元組8個位元位,若表示無符號數字是00000000~11111111 即0~255 ,若表示有符號數最高位元位應是符號位。

此題中10000000 -128 整形提公升後為:

1111 1111 1111 1111 1111 1111 1000 0000

按無符號整形十進位制輸出即4294967168

3.

#include

intmain()

char能表示的有符號數字的範圍是0127和-1281,本題char中的8個位元位已經不夠表示128,我們可以借一位表示,即110000000,此時最高位依然表示符號位,整形提公升增加符號位後為

1111 1111 1111 1111 1111 1111 1000 0000

按無符號整形十進位制輸出即4294967168

4.

#include

intmain()

i的二進位制原碼為1000 0000 0000 0000 0000 0000 0001 0100

j的二進位制原補碼為0000 0000 0000 0000 0000 0000 0000 1010

按照補碼的形式進行運算,最後格式化成為有符號整數為

1000 0000 0000 0000 0000 0000 0000 1010 -10

5.

#include

intmain()

return0;

}

死迴圈了,因為i是乙個無符號數不可能是負數,所以條件一定成立的,就一直死迴圈

6.

#include

intmain()

printf

("%d"

,strlen

(a))

;//255

return0;

}

a是乙個無符號的陣列,無符號只能放入的數字範圍為0-255,所以在第乙個數字-1(11111111)存入陣列時陣列以乙個無符號數255存入,-2以無符號數254存入,以此類推,當存入』0』時strlen就找到了停止符停下,此時陣列裡存入了255~1,有255個數字。

7.

#include

intmain()

短整形的取值範圍是-32768~32767,16位元位,32767二進位制為

0111 1111 1111 1111加1為

1000 0000 0000 0000此時為補碼,-1然後按位取反任然是1000 0000 0000 0000

即-32768

8.

#include

unsigned

char i =0;

intmain()

return0;

}

死迴圈了,i是乙個無符號數,範圍是0~255,所以for迴圈的條件一直成立,程式一直迴圈下去。

根據國際標準ieee(電氣電子工程師學會)754,任意乙個二進位制浮點數x可以表示成下面的形式:

資料在記憶體中的儲存解析

大家都直到,在c語言中有很多的資料型別,基本的內建型別有char,short,int long,long long,float,double,這些內建的型別可以分為整形家族和浮點數家族。而我們常用的也就是這兩種型別,這回就深度解析一下整形和浮點型在記憶體中的儲存。我們知道,定義乙個變數在記憶體中是需...

深度剖析資料在記憶體中的儲存

我們要想知道資料如何在記憶體中的儲存,就必須先談談資料型別的意義 1 如果我們把記憶體看成乙個個房間,那麼資料型別就決定了房間號和房間大小,這樣應該很好理解了吧 接下來我們來談談資料型別的分類 1 整形家族 char 有符號字元型,只不過把signed省略了 unsigned char 無符號型別字...

深度學習資料在記憶體中的儲存 C C

資料型別分類 1.整形 short 短整型 2 byte unsigned short int 無符號位 signed short int 有符號位 int 整形 4 byte unsigned int signed int long 長整型 8 byte unsigned long int sig...