最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言數(shù)據(jù)存儲(chǔ)歸類(lèi)介紹

 更新時(shí)間:2022年08月01日 10:10:06   作者:泡泡牛奶  
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類(lèi)型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類(lèi)型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么

數(shù)據(jù)類(lèi)型的介紹

在前面的章節(jié)中我們基本認(rèn)識(shí)到了各種數(shù)據(jù)類(lèi)型,這里我們就稍微回憶以下吧

類(lèi)型的意義:

  • 決定了訪問(wèn)內(nèi)存空間的大小
  • 決定了看待內(nèi)存空間的視角(例如:整型和字符數(shù)據(jù)類(lèi)型)

類(lèi)型的基本歸類(lèi)

整型家族:

char
    unsigned char
    signed char
short
    unsigned short [int]
    signed short [int]
int
    unsigned int
    signed int
long
    unsigned long [int]
    signed long [int]

浮點(diǎn)型家族:

float
double

構(gòu)造類(lèi)型:

> 數(shù)組類(lèi)型
> 結(jié)構(gòu)體類(lèi)型    struct
> 枚舉類(lèi)型    enum
> 聯(lián)合類(lèi)型    union

指針類(lèi)型:

int *pi;
char *pc;
float *pf;
void *pv;(泛型指針)

空類(lèi)型:

void 表示空類(lèi)型 (無(wú)類(lèi)型)

通常用于 函數(shù)的返回類(lèi)型、函數(shù)的參數(shù)、指針類(lèi)型

//作為函數(shù)的返回類(lèi)型
void f1()//不接受任何返回值
{
    ;
}
//作為函數(shù)的參數(shù)
int f2(void)//參數(shù)為void時(shí),傳入?yún)?shù)會(huì)報(bào)錯(cuò)
{
    ;
}
//作為指針類(lèi)型
void* f3(void* pv)//參數(shù)為 void* 時(shí),可接收任意類(lèi)型的參數(shù)
{
    ;
}

整型在內(nèi)存中的存儲(chǔ)

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

三種表示方法均有符號(hào)位和數(shù)值位

符號(hào)位: " 0 " 表示 正," 1 "表示 負(fù)

數(shù)值位:

正數(shù):

原碼、反碼、補(bǔ)碼相同

負(fù)數(shù):

原碼:直接將數(shù)值按二進(jìn)制翻譯

反碼:原碼符號(hào)位不變,其它位按位取反

補(bǔ)碼:反碼+1

我們可以在內(nèi)存中的存儲(chǔ)看到:

這里大家可能有個(gè)疑問(wèn),為什么ji在內(nèi)存中會(huì)是這樣?為什么ij內(nèi)部二進(jìn)制會(huì)倒過(guò)來(lái)存儲(chǔ)呢??編譯器壞了???(bushi

如果對(duì)此事好奇,就接著往下看吧。

什么是大小端

大小端存儲(chǔ)是計(jì)算機(jī)的一種存儲(chǔ)方式,其主存儲(chǔ)的方式也由計(jì)算機(jī)決定。

什么是大小端存儲(chǔ):

大端(存儲(chǔ))模式:指的是,數(shù)據(jù)的低 (二進(jìn)制)位保存在高地址中,高位保存在低地址中;

小端(存儲(chǔ))模式:指的是,數(shù)據(jù)的低位保存在低地址中,高位保存在高地址中;

注意:

大小端存儲(chǔ)只跟單個(gè)類(lèi)型數(shù)據(jù)的存儲(chǔ)方式有關(guān),數(shù)組的存儲(chǔ)依然是由低地址向高地址進(jìn)行存儲(chǔ)

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

在認(rèn)識(shí)浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)之前,我們先看一下下面的例子:

int main()
{
    int n = 9;
    float* pf = (float*)&n;
    printf("n的值為:%d\n", n);
    printf("pf的值為:%f\n", *pf);
    *pf = 9.0;
    printf("n的值為:%d\n", n);
    printf("pf的值為:%f\n", *pf);
    return 0;
}

為什么輸出結(jié)果會(huì)是這樣?

想要了解其中的原因我們首先要知道浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)規(guī)則

浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)規(guī)則

浮點(diǎn)數(shù)存儲(chǔ)根據(jù)國(guó)際標(biāo)準(zhǔn) IEEE (電氣工程師學(xué)會(huì)) 754 來(lái)進(jìn)行存儲(chǔ),具體規(guī)則如下:

  • (-1)^S * M * 2^E
  • (-1)^S 代表 符號(hào)位,S=0為正數(shù),S=1為負(fù)數(shù)
  • M 表示有效數(shù)字,(1 ≤ M < 2)
  • 2^E表示指數(shù)位

IEEE 754規(guī)定:

對(duì)于 float 類(lèi)型來(lái)說(shuō):

對(duì)于 double 類(lèi)型來(lái)說(shuō):

IEEE 754對(duì) 有效數(shù)字M 和 指數(shù)E 有一些特殊的規(guī)定:

有效數(shù)字M

前面說(shuō)過(guò),1 ≤ M < 2,也就是說(shuō),M可以寫(xiě)成 1.xxxxxx 的形式,將 小數(shù)點(diǎn)前省略,則其中xxxxxx 就是我們所要保存的數(shù)字

指數(shù)E

對(duì)于 float 類(lèi)型(E 占 8 位):E + 127 (取 0~255 中間數(shù))

對(duì)于 double 類(lèi)型(E 占 11 位):E + 1023 (取 0~2047 中間數(shù))

舉個(gè)例子(o?v?)ノ

十進(jìn)制的 5.0 想要存進(jìn)去

小數(shù)點(diǎn)前 需要轉(zhuǎn)換成 二進(jìn)制 101 . 0

根據(jù)科學(xué)計(jì)數(shù)法將其轉(zhuǎn)換,1.01 x 2^(2)

指數(shù)E 進(jìn)行替換 E = 2+127 = 129 = 1000 0001(二進(jìn)制)

由上可得出 S = 0 E = 1000 0001 M = 1.01

0  10000001 01000000000000000000000
S     E           M

整理一下:
0100 0000 1010 0000 0000 0000 0000 0000
用十六進(jìn)制表示:
4    0     a    0    0    0    0    0
整理一下:(大端存儲(chǔ))
40 a0 00 00
小端存儲(chǔ):
00 00 a0 40

趁著手還熱乎,趕緊再來(lái)看看吧(/≧▽≦)/

十進(jìn)制 -2.25 在內(nèi)存中如何存儲(chǔ)?

  • 符號(hào)為負(fù) S = 1
  • 小數(shù)點(diǎn)前正著寫(xiě)二進(jìn)制,小數(shù)點(diǎn)后按照2^(-n) ,n = 4 (1/4=0.25),(倒著寫(xiě)二進(jìn)制),所以二進(jìn)制為 10.01
  • 用科學(xué)計(jì)數(shù)表示 1.001 x 2^(1)
  • 指數(shù)E進(jìn)行替換 E = 1 + 127 = 128 = 1000 0000(二進(jìn)制)
  • 由上可得 S = 1 E = 1000 0000 M = 1.001

1 10000000 00100000000000000000000
S    E             M

整理一下:
1100 0000 0001 0000 0000 0000 0000 0000
用十六進(jìn)制表示:
c     0    1    0    0    0    0     0
整理一下:
c0 10 00 00
小端存儲(chǔ):
00 00 10 c0

注意:(特殊情況)

當(dāng)指數(shù)E為邊界值時(shí) 0~255(0~1023)直接等于具體的真實(shí)值

E全為0:

直接等于0

E全為1:

直接等于具體值340282346638528859811704183484516925440.000000(2^255)

到此這篇關(guān)于C語(yǔ)言數(shù)據(jù)存儲(chǔ)歸類(lèi)介紹的文章就介紹到這了,更多相關(guān)C語(yǔ)言數(shù)據(jù)存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++語(yǔ)言實(shí)現(xiàn)開(kāi)心消消樂(lè)

    C++語(yǔ)言實(shí)現(xiàn)開(kāi)心消消樂(lè)

    這篇文章主要為大家詳細(xì)介紹了C++語(yǔ)言實(shí)現(xiàn)開(kāi)心消消樂(lè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語(yǔ)言 解壓華為固件的實(shí)例代碼

    C語(yǔ)言 解壓華為固件的實(shí)例代碼

    這是解壓華為固件(update.app)的C語(yǔ)言。。其實(shí)這也是我翻115翻出來(lái)的。。。
    2013-08-08
  • 使用map實(shí)現(xiàn)單詞轉(zhuǎn)換的實(shí)例分析

    使用map實(shí)現(xiàn)單詞轉(zhuǎn)換的實(shí)例分析

    本篇文章是對(duì)使用map實(shí)現(xiàn)單詞轉(zhuǎn)換的代碼實(shí)例進(jìn)行了纖細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • OpenCV實(shí)現(xiàn)輪廓外接多邊形

    OpenCV實(shí)現(xiàn)輪廓外接多邊形

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)輪廓外接多邊形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++STL之string類(lèi)的使用

    C++STL之string類(lèi)的使用

    這篇文章主要為大家詳細(xì)介紹了C++STL中的string類(lèi),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C++實(shí)現(xiàn)調(diào)用系統(tǒng)時(shí)間簡(jiǎn)單示例

    C++實(shí)現(xiàn)調(diào)用系統(tǒng)時(shí)間簡(jiǎn)單示例

    這篇文章主要介紹了C++實(shí)現(xiàn)調(diào)用系統(tǒng)時(shí)間,需要的朋友可以參考下
    2014-07-07
  • C++動(dòng)態(tài)加載so/dll庫(kù)的實(shí)現(xiàn)

    C++動(dòng)態(tài)加載so/dll庫(kù)的實(shí)現(xiàn)

    本文主要介紹了C++動(dòng)態(tài)加載so/dll庫(kù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Visual C++中Tab View的多種實(shí)現(xiàn)方法

    Visual C++中Tab View的多種實(shí)現(xiàn)方法

    這篇文章主要介紹了Visual C++中Tab View的多種實(shí)現(xiàn)方法,包括了CTabCtrl控件、CSheetCtrl標(biāo)簽選擇窗口以及靜態(tài)分割窗口等實(shí)現(xiàn)Tab View的方法,需要的朋友可以參考下
    2014-10-10
  • 詳解c++良好的編程習(xí)慣與編程要點(diǎn)

    詳解c++良好的編程習(xí)慣與編程要點(diǎn)

    c++語(yǔ)言的靈活是建立在對(duì)編程者個(gè)人的編程素質(zhì)的嚴(yán)格要求基礎(chǔ)上的,好的C++編程習(xí)慣能避免很多問(wèn)題。沒(méi)有好的編程習(xí)慣,極有可能編寫(xiě)一行代碼,編譯器能報(bào)十幾個(gè)錯(cuò)誤,而且就算編譯通過(guò)了,將來(lái)在運(yùn)行過(guò)程中也會(huì)有很多莫名奇妙的問(wèn)題
    2021-06-06
  • Qt消除警告的實(shí)現(xiàn)示例

    Qt消除警告的實(shí)現(xiàn)示例

    Qt5 和 Qt6 之間存在一些差異,導(dǎo)致在編譯時(shí)可能產(chǎn)生警告,為了消除這些警告,Qt 提供了一些宏定義來(lái)幫助你在代碼中處理這些差異,本文主要介紹了Qt消除警告的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

尼勒克县| 游戏| 确山县| 无极县| 改则县| 道孚县| 阳城县| 霞浦县| 玛曲县| 望都县| 景德镇市| 镇江市| 土默特右旗| 正阳县| 白玉县| 新乡县| 荥经县| 遂宁市| 改则县| 牡丹江市| 鄂温| 巴彦淖尔市| 临安市| 勃利县| 广元市| 宝兴县| 海兴县| 金沙县| 昌邑市| 双流县| 灵丘县| 永靖县| 昔阳县| 三门县| 牟定县| 兴业县| 陆川县| 桐庐县| 洪泽县| 昂仁县| 裕民县|