国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

這篇具有很好參考價(jià)值的文章主要介紹了C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

今天我們深度剖析數(shù)據(jù)在內(nèi)存中的存儲:

重點(diǎn)知識:

1、數(shù)據(jù)類型詳細(xì)介紹

2、整形在內(nèi)存中的存儲:原碼、反碼、補(bǔ)碼

3、大小端字節(jié)序介紹及判斷

4、浮點(diǎn)型在內(nèi)存中的存儲解析

之前我們涉及關(guān)于這一部分的知識只是大致的進(jìn)行講解,今天我們要把這個(gè)內(nèi)容詳細(xì)的講解和總結(jié)。


1、數(shù)據(jù)類型介紹

在前面我們已經(jīng)學(xué)習(xí)了基本的內(nèi)置類型(內(nèi)置類型就是語言自身定義的類型):

char? ? ? ? ? ? ? ? //字符數(shù)據(jù)類型

short? ? ? ? ? ? ? ?//短整型

int? ? ? ? ? ? ? ? ?? //整形

long? ? ? ? ????????//長整形

long long? ? ? ? //更長的整形

float? ? ? ????????? //單精度浮點(diǎn)型

double? ? ? ? ? ? //雙精度浮點(diǎn)型

//C語言有沒有字符串類型呢?

答案是:C語言沒有字符串類型,但是可以用字符數(shù)組或字符指針來表示。

以及他們所占存儲空間的大小(sizeof-操作符-計(jì)算操作數(shù)的類型長度-單位字節(jié))。

類型的意義:

1、使用這個(gè)類型開辟內(nèi)存空間的大?。ù笮Q定了使用范圍)

2、如何看待內(nèi)存空間的視角(如:int的內(nèi)存空間存放整形,float的內(nèi)存空間存放單精度浮點(diǎn)數(shù))

總結(jié):類型是用來創(chuàng)建變量的,在我們創(chuàng)建變量的時(shí)候,我們要選擇合適的類型,合理的利用內(nèi)存空間。

1.1 類型的基本歸類:

整形家族:

char

? ? ? ? unsigned?char

? ? ? ? signed char

short

? ? ? ? unsigned short [int]

? ? ? ? [signed] short [int]

int?

? ? ? ? unsigned int

? ? ? ? [signed] int

long

? ? ? ? unsigned long [int]

? ? ? ? [signed] long [int]

long long?

? ? ? ? unsigned long long [int]

? ? ? ? [signed] long long [int]

講解:

1、char為什么屬于整形家族?

答案是:字符在存儲的時(shí)候存儲的是ASCII碼值,ASCII碼值是整數(shù),所以在歸類的時(shí)候,字符屬于整形家族。

2、signed和unsigned的介紹:

(1)signed和unsigned是用來修飾整形家族類型的(注:不能修飾浮點(diǎn)類型,因?yàn)樗麄儙в蟹?。

(2)signed:有符號的,二進(jìn)制最高位為符號位,其它位為數(shù)據(jù)位,正負(fù)數(shù)均可正常存放。(最高位為1表示負(fù)數(shù),最高位為0表示正數(shù))

(3)unsigned:無符號的,自身所有二進(jìn)制位都是數(shù)據(jù)位,存放正數(shù)。(所以無符號數(shù)的最大值要比有符號的大約一半,因?yàn)橛蟹枖?shù)的最高位被用來做符號位)

(4)默認(rèn)的short、int、long、long long為有符號數(shù)。(上方[]表示里面的內(nèi)容可以省略)

(5)char本身到底是signed char還是unsigned char取決于編譯器的實(shí)現(xiàn)。(常見的編譯器char==signed char)

浮點(diǎn)數(shù)家族:

float? ? ? ? //單精度浮點(diǎn)型

double? ? //雙精度浮點(diǎn)型

注:字面浮點(diǎn)數(shù)默認(rèn)為雙精度浮點(diǎn)型,所以在定義單精度浮點(diǎn)型時(shí)要強(qiáng)制類型轉(zhuǎn)換。

如:float data = 3.14f;

構(gòu)造類型:(自定義類型)

數(shù)組類型? ? ? ? ? ?//因?yàn)閿?shù)組大小和元素類型,是我們根據(jù)需求自己定義的,所以屬于構(gòu)造類型

結(jié)構(gòu)體類型? ? ? ? struct

枚舉類型? ? ? ? ? ? enum

聯(lián)合類型? ? ? ? ? ? union

指針類型:

(1)對指針的理解:指針變量前的第一個(gè)*與變量結(jié)合表示它是指針,再往前面所有東西表示這個(gè)指針?biāo)赶驅(qū)ο蟮念愋汀?/strong>

(2)指針類型的意義:指針是有類型的,指針的類型決定了指針+-整數(shù)的步長,指針解引用操作的時(shí)候的權(quán)限。

int *pi;

char *pc;

float *pf;

void *pv;

空類型:

void表示空類型(無類型)

通常應(yīng)用于函數(shù)的返回類型、函數(shù)的參數(shù)、指針類型。

圖解:

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

2、整形在內(nèi)存中的存儲

以前我們知道一個(gè)變量的創(chuàng)建是要在內(nèi)存中開辟空間的??臻g的大小是根據(jù)不同的類型而決定的。

那接下來我們談?wù)剶?shù)據(jù)在所開辟內(nèi)存到底是如何存儲的?

2.1? 原碼、反碼、補(bǔ)碼

計(jì)算機(jī)中的整數(shù)有3種二進(jìn)制表示方法,即原碼、反碼和補(bǔ)碼。

三種表示方法均有符號位和數(shù)值位兩部分,符號位都是用0表示“正”,用1表示“負(fù)”,而數(shù)值位——

正數(shù)的原、反、補(bǔ)碼都相同。

負(fù)整數(shù)的三種表示方法各不相同。

原碼:

????????直接將數(shù)值按照正負(fù)數(shù)的形式翻譯成二進(jìn)制就可以得到原碼。

反碼:

????????原碼的符號位不變,其他位依次按位取反就可以得到反碼。

補(bǔ)碼:

????????反碼+1就得到補(bǔ)碼。

對于整形數(shù)據(jù)來說:數(shù)據(jù)在內(nèi)存中存儲的是補(bǔ)碼。

為什么是補(bǔ)碼呢?

在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲。原因在于,使用補(bǔ)碼,可以將符號位和數(shù)值域統(tǒng)一處理;
同時(shí),加法和減法也可以統(tǒng)一處理(CPU只有加法器)此外,補(bǔ)碼與原碼相互轉(zhuǎn)換,其運(yùn)算過程 是相同的,不需要額外的硬件電路。
圖示:
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

代碼1:驗(yàn)證整形數(shù)值在內(nèi)存中統(tǒng)一用補(bǔ)碼存儲

int main()
{
	int a = 1;
	int b = 1;
	int c = a - b;
	//c = 1 - 1
	//CPU只有加法器,所以轉(zhuǎn)化成 1 + (-1)
	//如果我們使用原碼來計(jì)算:
	//1的原碼:00000000000000000000000000000001
	//-1的原碼:10000000000000000000000000000001
	//1+(-1)的原碼:10000000000000000000000000000010--->-2,err
	
	//我們使用補(bǔ)碼計(jì)算:
	//1的補(bǔ)碼:00000000000000000000000000000001
	//-1的補(bǔ)碼:11111111111111111111111111111111
	//1+(-1)的補(bǔ)碼:00000000000000000000000000000000--->0,turn

	//所以在計(jì)算機(jī)中對于整型數(shù)據(jù):存放的是補(bǔ)碼
	return 0;
}

代碼2:觀察數(shù)據(jù)在內(nèi)存中的存儲

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

a和b確實(shí)在內(nèi)存中存儲的是補(bǔ)碼,但是我們發(fā)現(xiàn)順序有點(diǎn)不對勁(倒著存放的)。

這又是為什么?

2.2? 大小端介紹

什么是大端小端:

大端(存儲)模式,是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的低地址中;
小端(存儲)模式,是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位,,保存在內(nèi)存的高地址中

為什么有大端和小端呢?

答案是:因?yàn)橛?jì)算機(jī)系統(tǒng)中,我們是以字節(jié)為單位的,每個(gè)地址單位都對應(yīng)著一個(gè)字節(jié),一個(gè)字節(jié)
8bit。但是在C語言中除了8bit的char之外,其他類型所占空間都大于8bit,另外,對于位數(shù)大于8位 的處理器,例如16位或32位的處理器,由于寄存器寬度大于一個(gè)字節(jié),那么必然存在著一個(gè)如何 將多個(gè)字節(jié)安排的問題。因此就導(dǎo)致了大端存儲和小端存儲模式。
如圖解:
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?
我們常用的 X86 結(jié)構(gòu)是小端模式,而 KEIL C51 則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬件來選擇是大端模式還是小端模式。
百度2015年系統(tǒng)工程師筆試題:
請簡述大端字節(jié)序和小端字節(jié)序的概念,設(shè)計(jì)一個(gè)小程序來判斷當(dāng)前機(jī)器的字節(jié)序。
分析: 大端字節(jié)序是把一個(gè)數(shù)據(jù)的低字節(jié)的內(nèi)容存放在高地址處,高字節(jié)的內(nèi)容存放在低地址處;小端字節(jié)與之相反。我們定義一個(gè)整形變量a賦值1(最簡單),取出它的第一位字節(jié)的內(nèi)容,內(nèi)容等于1則為小端,反之為大端。
圖示:
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?
代碼:
#include<stdio.h>
//自定義函數(shù)——返回整數(shù)1的第一個(gè)字節(jié)的內(nèi)容
int check_sys()
{
	int a = 1;
	return *(char*)&a;//把a(bǔ)的類型強(qiáng)制轉(zhuǎn)換為char*,再解引用得到a第一個(gè)字節(jié)的內(nèi)容
}
int main()
{
	//調(diào)用函數(shù)
	int ret = check_sys();
	//判斷結(jié)果是否為1.為1則為小端,反之為大端
	if (1 == ret)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}

運(yùn)行結(jié)果:小端(VS2019是小端字節(jié)序存儲)

2.3? 練習(xí)

代碼1:

#include <stdio.h>
int main()
{
	char a = -1;
	//-1是整數(shù),32bit位
	//原碼:10000000000000000000000000000001
	//反碼:11111111111111111111111111111110
	//補(bǔ)碼:11111111111111111111111111111111
	//因?yàn)閍的類型是char(在VS2019默認(rèn)為有符號的),所以截?cái)?	//a的補(bǔ)碼:11111111
	signed char b = -1;
	//b和a一樣
	unsigned char c = -1;
	//c的補(bǔ)碼:11111111
	printf("a=%d,b=%d,c=%d", a, b, c);
	//%d是打印有符號的十進(jìn)制整數(shù)(原碼)
	//a和b的類型都為有符號的char,整形提升是按照變量的數(shù)據(jù)類型的符號位來提升的
	//a和b提升:11111111111111111111111111111111
	// 取反:10000000000000000000000000000000
	// 原碼:10000000000000000000000000000001 -->-1
	//c的類型是無符號的char,整形提升直接高位補(bǔ)0
	//c的提升:00000000000000000000000011111111 -->255
	return 0;
}

代碼2:

#include <stdio.h>

int main()
{
	char a = -128;
	//a的補(bǔ)碼:10000000
	printf("%u\n", a);
	//%u是打印無符號的十進(jìn)制整數(shù)(無符號-所有位都是數(shù)值位)
	//a的類型是有符號的char,整形提升是按照變量的數(shù)據(jù)類型的符號位來提升的
	//a提升:11111111111111111111111110000000 -->4294967168
	return 0;
}

代碼3:

#include <stdio.h>
int main()
{
	char a = 128;
	//128的補(bǔ)碼:00000000000000000000000010000000
	//a是char--截?cái)啵?0000000
	printf("%u\n", a);
	//%u是打印無符號十進(jìn)制整數(shù)(無符號--32bit位均為數(shù)值位)
	//a的類型是有符號的char,整形提升是按照變量的數(shù)據(jù)類型符號位來提升
	//a提升:11111111111111111111111110000000 -- 4294967168
	return 0;
}

char的取值范圍:

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

代碼4:

#include<stdio.h>

int main()
{
	int i = -20;
	//-20的原碼:10000000000000000000000000010100
	//-20的反碼:11111111111111111111111111101011
	//-20的補(bǔ)碼:11111111111111111111111111101100
	unsigned int j = 10;
	//10的補(bǔ)碼:00000000000000000000000000001010
	printf("%d\n", i + j);
	//雖然i+j的類型是無符號的,但是最后格式化成為有符號整數(shù)
	//①i+j的補(bǔ)碼:11111111111111111111111111110110
	//取反:10000000000000000000000000001001
	//+1:   10000000000000000000000000001010 -->-10
	return 0;
}

?代碼5:

#include<stdio.h>
#include<windows.h>

int main()
{
	unsigned int i;
	for (i = 9; i >= 0; i--)//死循環(huán),因?yàn)閕是無符號類型的,它的最小取值都為0
	{
		printf("%u\n", i);
		Sleep(1000);//Sleep函數(shù)是實(shí)現(xiàn)睡眠,單位毫秒
	}
	return 0;
}

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

積累:當(dāng)你使用無符號類型做循環(huán)變量時(shí),一定要格外小心!?

代碼6:

#include<stdio.h>
#include<string.h>

int main()
{
	char a[1000];
	int i;
	for (i = 0; i < 1000; i++)
	{
		a[i] = -1 - i;//-1 -2 -3 …… -128 127 126 …… 2 1 0 -1 ……
	}
	//strlen是計(jì)算字符串的長度的,統(tǒng)計(jì)‘\0’(ASCII值0)之前的
	printf("%d", strlen(a));//128 + 127 = 255
	return 0;
}

3、浮點(diǎn)數(shù)在內(nèi)存中的存儲

常見的浮點(diǎn)數(shù):

3.14159
1E10 //1.0*10^10
浮點(diǎn)數(shù)家族包括: float、double、long double 類型。
浮點(diǎn)數(shù)表示的范圍:float.h中定義? ? ?//整形的取值范圍可以在“l(fā)imits.h”中查看

3.1? 一個(gè)例子

浮點(diǎn)數(shù)存儲的例子:
?
#include<stdio.h>

int main()
{
	int n = 9;
	float* pFloat = (float*)&n;
	printf("n的值為:%d\n", n);//%d是打印有符號的十進(jìn)制整數(shù)
	printf("*pFloat的值為:%f\n", *pFloat);//%f是打印有符號的單精度浮點(diǎn)數(shù)
	*pFloat = 9.0;
	printf("num的值為:%d\n", n);//%d是打印有符號的十進(jìn)制整數(shù)
	printf("*pFloat的值為:%f\n", *pFloat);//%f是打印有符號的單精度浮點(diǎn)數(shù)
	return 0;
}

?

運(yùn)行結(jié)果是什么呢?

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

運(yùn)行之后我們得到了很怪的結(jié)果,這是為什么呢?

答案是:整形和浮點(diǎn)型在內(nèi)存中的存儲方式是截然不同的,接下來我們來學(xué)習(xí)浮點(diǎn)型在內(nèi)存中是怎么存儲的。

3.2? 浮點(diǎn)數(shù)存儲規(guī)則

num 和 *pFloat 在內(nèi)存中明明是同一個(gè)數(shù),為什么浮點(diǎn)數(shù)和整數(shù)的解讀結(jié)果會差別這么大?

要理解這個(gè)結(jié)果,一定要搞懂浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部的表示方法。

解讀:
根據(jù)國際標(biāo)準(zhǔn)IEEE(電氣和電子工程協(xié)會)754,任意一個(gè)二進(jìn)制浮點(diǎn)數(shù)V可以表示成下面的形
式:
V = (-1)^S * M * 2^E
(-1)^S表示符號位,當(dāng)S=0,V為正數(shù);當(dāng)S=1,V為負(fù)數(shù)。
M表示有效數(shù)字,大于等于1,小于2。
2^E表示指數(shù)位。
圖解:
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

IEEE? 754規(guī)定:

對于32位的浮點(diǎn)數(shù),最高的1位是符號位s,接著的8位是指數(shù)E,剩下的23位為有效數(shù)字M。
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?
對于64位的浮點(diǎn)數(shù),最高的1位是符號位S,接著的11位是指數(shù)E,剩下的52位為有效數(shù)字M。
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

那S,M,E,是怎么存儲的呢?

(1)S的存儲:

????????S = 0,V為正數(shù);S = 1,V為負(fù)數(shù)。M和E比較復(fù)雜,下面我們詳細(xì)對其講解。

IEEE 754對有效數(shù)字M和指數(shù)E,有一些特別的規(guī)定。

(2)M的存儲:

前面說過, 1≤M<2 ,也就是說,M可以寫成 1.xxxxxx 的形式,其中xxxxxx表示小數(shù)部分。
IEEE 754規(guī)定,在計(jì)算機(jī)內(nèi)部保存M時(shí),默認(rèn)這個(gè)數(shù)的第一位總是1,因此可以被舍去,只保存后面的 xxxxxx部分(提高了浮點(diǎn)數(shù)的精度)。
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

(3)E的存儲:

首先,E為一個(gè)無符號整數(shù)(unsigned int)
這意味著,如果E為8位,它的取值范圍為0~255;如果E為11位,它的取值范圍為0~2047。但是,我們知道,科學(xué)計(jì)數(shù)法中的E是可以出現(xiàn)負(fù)數(shù)的,所以IEEE 754規(guī)定,存入內(nèi)存時(shí)E的真實(shí)值必須再加上一個(gè)中間數(shù),對于8位的E,這個(gè)中間數(shù)是127;對于11位的E,這個(gè)中間數(shù)是1023。
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

?然后,指數(shù)E從內(nèi)存中取出還可以再分成三種情況:

①E不全為0或不全為1(即有0也有1)

這時(shí),浮點(diǎn)數(shù)就采用下面的規(guī)則表示,即指數(shù)E的計(jì)算值減去127(或1023),得到真實(shí)值,再將有效數(shù)字M前加上第一位的1
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

②E為全0

這時(shí),浮點(diǎn)數(shù)的指數(shù)E等于1-127(或者1-1023)即為真實(shí)值 ,有效數(shù)字M不再加上第一位的1,而是還原為0.xxxxxx的小數(shù)。 這樣做是為了表示±0,以及接近于0的很小的數(shù)字。
C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

③E為全1

此時(shí),指數(shù)E全為1,表示無窮大(正負(fù)取決于符號位S)。

C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?

現(xiàn)在我們來解釋一下前面3.1的題目:
#include<stdio.h>

int main()
{
	int n = 9;
	//9的補(bǔ)碼:00000000000000000000000000001001
	float* pFloat = (float*)&n;
	printf("n的值為:%d\n", n);
	//%d是打印有符號的十進(jìn)制整數(shù)
	//00000000000000000000000000001001 ---9
	printf("*pFloat的值為:%f\n", *pFloat);
	//%f是打印有符號的單精度浮點(diǎn)數(shù)
	//0 00000000 00000000000000000001001
	//s = 0
	//m = 0.00000000000000000001001(e為全0,m不再加上1)
	//e = 1-127 = -126
	//v = (-1)^0 * 0.00000000000000000001001 * 2^-126 --->0.000000
	*pFloat = 9.0;//pfloat指向的是單精度浮點(diǎn)型的空間
	//1001.0
	// (-1)^0 * 1.0010 * 2^3
	//s = 0
	//m = 1.001
	//e = 3
	//9.0在內(nèi)存中的存儲:01000001000100000000000000000000
	printf("num的值為:%d\n", n);
	//%d是打印有符號的十進(jìn)制整數(shù)
	//01000001000100000000000000000000 ---1091567616
	printf("*pFloat的值為:%f\n", *pFloat);
	//%f是打印有符號的單精度浮點(diǎn)數(shù)
	//9.000000
	return 0;
}

通過學(xué)習(xí)了數(shù)據(jù)在內(nèi)存中的存儲,我們對代碼的理解層次更深。文章來源地址http://www.zghlxwxcb.cn/news/detail-432382.html

到了這里,關(guān)于C語言進(jìn)階——數(shù)據(jù)在內(nèi)存中的存儲,你知道嗎?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【c語言進(jìn)階】深入挖掘數(shù)據(jù)在內(nèi)存中的存儲

    【c語言進(jìn)階】深入挖掘數(shù)據(jù)在內(nèi)存中的存儲

    鐵汁們,今天給大家分享一篇數(shù)組及詳解冒泡排序,來吧,開造?? 類型的 意義 : 類型是用來創(chuàng)建變量, 變量的創(chuàng)建需要在內(nèi)存中開辟一塊內(nèi)存空間 ,用來存儲變量的值, 類型的大小決定了開辟內(nèi)存空間的大小 。 基本內(nèi)置類型: c語言標(biāo)準(zhǔn)只規(guī)定sizeof(long)只要大于等于

    2024年02月08日
    瀏覽(35)
  • 【C語言進(jìn)階】——深入剖析數(shù)據(jù)在內(nèi)存中的存儲

    【C語言進(jìn)階】——深入剖析數(shù)據(jù)在內(nèi)存中的存儲

    到目前為止,我們已經(jīng)掌握了C語言的基本內(nèi)置類型,如下: 每一種數(shù)據(jù)類型的大小不同,這也就決定了它所存儲的數(shù)據(jù)范圍也就不同,就比如char和int所存儲的數(shù)據(jù)范圍就不同,那么具體能存儲多少呢?相信大家看完本本章內(nèi)容,就能對每一種數(shù)據(jù)是怎么存儲在內(nèi)存中的,就

    2024年02月19日
    瀏覽(27)
  • C進(jìn)階:數(shù)據(jù)在內(nèi)存中的存儲(1)

    C進(jìn)階:數(shù)據(jù)在內(nèi)存中的存儲(1)

    大家好,感謝大家最近的支持,今天也是開始了C進(jìn)階一系列的博文的創(chuàng)作,歡迎大佬們來指點(diǎn),歡迎來一起溝通?。。?我們都知道:C語言具有以下幾種數(shù)據(jù)類型: 這里注意的是: sizeof(int) = sizeof(long), 在上述類型中,我們可以通過limits.h中的(MAX和MIN)獲得類型的的最大值

    2024年02月06日
    瀏覽(26)
  • C進(jìn)階:數(shù)據(jù)在內(nèi)存中的存儲(2)

    C進(jìn)階:數(shù)據(jù)在內(nèi)存中的存儲(2)

    在上一篇博文中,相信大家對于數(shù)據(jù)類型以及整數(shù)在內(nèi)存中的存儲有了一定了解,那么,浮點(diǎn)數(shù)是怎么在內(nèi)存中存儲的呢?下面來看一下我的講解。 浮點(diǎn)數(shù)家族: 包括:float,double,long double類型。與limits.h相似, 浮點(diǎn)數(shù)也有限制范圍的頭文件float.h. 與limits.h相似,float.h也包括

    2024年02月11日
    瀏覽(24)
  • 【C進(jìn)階】深度剖析數(shù)據(jù)在內(nèi)存中的存儲

    【C進(jìn)階】深度剖析數(shù)據(jù)在內(nèi)存中的存儲

    目錄 一、數(shù)據(jù)類型的介紹 1.類型的意義: 2.類型的基本分類 二、整形在內(nèi)存中的存儲 1.原碼 反碼 補(bǔ)碼 2.大小端介紹 3.練習(xí) 三、浮點(diǎn)型在內(nèi)存中的存儲 1.一個(gè)例子 ??2.浮點(diǎn)數(shù)存儲規(guī)則 前面我們已經(jīng)學(xué)習(xí)了基本的內(nèi)置類型以及他們所占存儲空間的大小: char? ? ? ? ? //字符

    2024年02月10日
    瀏覽(19)
  • C語言數(shù)據(jù)在內(nèi)存中的存儲

    C語言數(shù)據(jù)在內(nèi)存中的存儲

    目錄 前言 本期內(nèi)容介紹 一、數(shù)據(jù)類型的介紹 1.1類型的意義: 1.2C語言中是否有字符串類型? 1.3類型的基本歸類 整型家族: 浮點(diǎn)型(實(shí)型)家族: 構(gòu)造(自定義)類型: 指針類型: 空類型: 二、整型在內(nèi)存中的存儲 2.1原碼、反碼、補(bǔ)碼 總結(jié): 2.2大小端字節(jié)序介紹 2.3什

    2024年02月16日
    瀏覽(21)
  • c語言-數(shù)據(jù)在內(nèi)存中的存儲

    c語言-數(shù)據(jù)在內(nèi)存中的存儲

    1.整數(shù)的2進(jìn)制表示方法有三種,即 原碼、反碼和補(bǔ)碼 2. 三種表示方法均有符號位和數(shù)值位兩部分,符號位都是用0表示“正”,用1表示“負(fù)”,而數(shù)值位最高位的一位是被當(dāng)做符號位,剩余的都是數(shù)值位。 3. 存儲時(shí)存儲的是補(bǔ)碼,取出的時(shí)取出的原碼 如: 正負(fù)數(shù)的原碼、反

    2024年02月04日
    瀏覽(18)
  • <C語言> 數(shù)據(jù)在內(nèi)存中的存儲

    <C語言> 數(shù)據(jù)在內(nèi)存中的存儲

    C語言中的基本內(nèi)置類型如下: 類型的意義: 1.使用這個(gè)類型開辟內(nèi)存空間的大?。ù笮Q定了使用范圍)。 2.如何看待內(nèi)存空間的視角。 整型家族: 注意:char有些編譯器沒有規(guī)定是unsigned還是signed 浮點(diǎn)數(shù)家族: 構(gòu)造類型: 指針類型: 空類型: void 表示空類型(無類型)

    2024年02月16日
    瀏覽(25)
  • C語言——數(shù)據(jù)在內(nèi)存中的存儲

    C語言——數(shù)據(jù)在內(nèi)存中的存儲

    本章重點(diǎn) 1. 數(shù)據(jù)類型詳細(xì)介紹 2. 整形在內(nèi)存中的存儲:原碼、反碼、補(bǔ)碼 3. 大小端字節(jié)序介紹及判斷 4. 浮點(diǎn)型在內(nèi)存中的存儲解析 目錄 1. 數(shù)據(jù)類型介紹 1.1 類型的基本歸類 2. 整形在內(nèi)存中的存儲 2.1 原碼、反碼、補(bǔ)碼 2.2 大小端介紹 2.3 練習(xí) 2.4 unsigned char 和 signed char的區(qū)別

    2024年02月08日
    瀏覽(33)
  • 【C語言】數(shù)據(jù)在內(nèi)存中的存儲

    【C語言】數(shù)據(jù)在內(nèi)存中的存儲

    什么叫做浮點(diǎn)數(shù),就是有小數(shù)的數(shù)據(jù)就要浮點(diǎn)數(shù),比如:5.5 6.5 9.0等一些數(shù)據(jù)就叫浮點(diǎn)數(shù),那么浮點(diǎn)數(shù)又是怎么在內(nèi)存中存放的呢,下面聽我一一道來。 浮點(diǎn)型的家族包括:float double long double 我們以以下代碼為例比較下浮點(diǎn)數(shù)和整型數(shù)據(jù)內(nèi)存中的存儲是如何的: 打印的結(jié)果

    2024年02月07日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包