国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

BicycleWarrior / 1875人閱讀

摘要:文章目錄一數(shù)據(jù)類型二整型在內(nèi)存中的存儲原碼反碼補碼大小端三例題練習(xí)一數(shù)據(jù)類型在語言中有整型浮點型構(gòu)造類型指針類型等。正數(shù)的原反補碼都相同對于整形來說數(shù)據(jù)在內(nèi)存中存放的都是補碼。

一、數(shù)據(jù)類型

在c語言中有整型、浮點型、構(gòu)造類型、指針類型等。

類型的意義在于:

  1. 使用不同的類型決定了開辟空間的大小
  2. 決定了如何使用內(nèi)存空間

二、整型在內(nèi)存中的存儲

知道了一個變量的類型,就知道可以開辟的空間的大小。
那例如int型具體是如何在內(nèi)存中進行存儲的呢?
需要了解下面的概念:

1.原碼、反碼、補碼

計算機中的有符號數(shù)有三種表示方法,即原碼、反碼和補碼。
三種表示方法均有符號位和數(shù)值位兩部分,符號位都是用0表示“正”,用1表示“負”,而數(shù)值位
三種表示方法各不相同。

原碼
直接將二進制按照正負數(shù)的形式翻譯成二進制就可以。

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

補碼
反碼+1就得到補碼。

正數(shù)的原、反、補碼都相同
對于整形來說:數(shù)據(jù)在內(nèi)存中存放的都是補碼。
原因在于,使用補碼,可以將符號位和數(shù)值域統(tǒng)一處理;同時,加法和減法也可以統(tǒng)一處理。此外,補碼與原碼相互轉(zhuǎn)換,其運算過程是相同的,不需要額外的硬件電路。


看看在內(nèi)存中的存儲:
按照推理,a的補碼應(yīng)該是0000 0014,b的補碼應(yīng)該是ffff fff6
而在內(nèi)存中所存儲的形式有點不一樣,這可能就得了解大小端的概念了

2.大小端

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

從圖中可以看出這臺電腦是小端存儲的,因為它數(shù)值的低權(quán)值位存儲在低地址處。

三、例題練習(xí)

//輸出什么?#include int main(){    char a= -1;    signed char b=-1;    unsigned char c=-1;    printf("a=%d,b=%d,c=%d/n",a,b,c);    return 0; }

結(jié)果:

解析:

首先-1是整型常量,在32位下的補碼是1111 1111 1111 1111 1111 1111 1111 1111 ,在存入char型變量時發(fā)生截斷,所以在內(nèi)存中存入a b c的數(shù)據(jù)都是1111 1111,是一樣的,這是因為數(shù)據(jù)的存入和目標(biāo)變量沒有關(guān)系,目標(biāo)變量只提供存儲空間。
printf也是函數(shù),傳參就要發(fā)生值拷貝,就需要用到CPU,也同樣就會發(fā)生隱式轉(zhuǎn)換。
ab都是有符號字符型,發(fā)生整型提升時補上對應(yīng)的符號位,即1111 1111 1111 1111 1111 1111 1111 1111,還是-1的補碼,按照%d的有符號整數(shù)進行打印時,就是-1。
c變量是無符號字符型,在進行整型提升時默認補0,也就是0000 0000 0000 0000 0000 0000 1111 1111,按照%d進行打印后是255

#include int main(){    char a = -128;    printf("%u/n",a);    return 0; }

結(jié)果:

分析:

#include int main(){    char a = 128;    printf("%u/n",a);    return 0; }

結(jié)果:
和上一題一樣,因為128和-128發(fā)生截斷后在a里存的數(shù)據(jù)是一樣的

    int i = -20;    unsigned int j = 10;    printf("%d/n", i + j);

結(jié)果:

分析:

因為并沒有對兩個變量的數(shù)據(jù)進行修改,想加過后按照%d的結(jié)果就是兩個數(shù)直接相加的結(jié)果

    unsigned int i;    for (i = 9;i >= 0;i--)    {        printf("%u/n", i);    }

結(jié)果:
死循環(huán),從9->0->255->0->255,因為無符號數(shù)始終大等于0

int main(){    char a[1000];    int i;    for(i=0; i<1000; i++)   {        a[i] = -1-i;   }    printf("%d",strlen(a));    return 0; }

結(jié)果:

分析:

#include unsigned char i = 0;int main(){    for(i = 0;i<=255;i++)   {        printf("hello world/n");   }    return 0; }

結(jié)果:
死循環(huán),i 的值從0->255一直循環(huán)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/121412.html

相關(guān)文章

  • Express.js?中的 Sessions 如何工作?(譯)

    世界上任何一個擁有用戶數(shù)據(jù)的 web 應(yīng)用都必須處理 sessions。作為一名開發(fā)者,我們必須要知道它們是什么以及如何處理它們。在這篇文章中,我想要分享的是: session 是什么? session 如何存儲數(shù)據(jù)? 你如何決定存放 session 數(shù)據(jù)的位置? 在 sessions 工作時,你必須意識到的安全性上的影響有哪些?在一些示例代碼中,我將會運用?session npm modul...

    Hydrogen 評論0 收藏0
  • 【C語言進階】??數(shù)據(jù)類型&amp;&amp;整型內(nèi)存中的存儲

    目錄 ? ?一、數(shù)據(jù)類型介紹 二、類型的意義 三、類型的基本歸類 整型家族 浮點數(shù)家族 構(gòu)造類型(自定義類型) 指針類型 空類型 四、整形在內(nèi)存中的存儲 原碼、反碼、補碼 大小端字節(jié)序 為什么有大端和小端? 一道經(jīng)典筆試題 ?一、數(shù)據(jù)類型介紹 數(shù)據(jù)從大的方向分為兩類: 內(nèi)置類型自定義類型內(nèi)置類型我們前面已經(jīng)學(xué)習(xí)過,如下: char? ? ? ? ? ? //字符數(shù)據(jù)類型 short? ? ? ...

    Xufc 評論0 收藏0
  • C語言進階第一問:數(shù)據(jù)內(nèi)存中是如何存儲的?(手把手帶你深度剖析數(shù)據(jù)內(nèi)卒中的存儲,超全解析,碼住不

    摘要:在符號位中,表示正,表示負。我們知道對于整型來說,內(nèi)存中存放的是該數(shù)的補碼。在計算機系統(tǒng)中,數(shù)值一律用補碼來表示和存儲。表示有效數(shù)字,。規(guī)定對于位的浮點數(shù),最高的位是 ...

    ghnor 評論0 收藏0
  • Mongo、Redis、Memcached對比及知識總結(jié)

    摘要:當(dāng)重啟時,將會讀取文件進行重放以恢復(fù)到關(guān)閉前的最后時刻。伸縮性受到線程數(shù)的限制,線程數(shù)的調(diào)度對也是不小的負擔(dān)。所以允許我們設(shè)置線程池的大小,對需要從文件中加載相應(yīng)數(shù)據(jù)的讀取請求進行并發(fā)操作,減少阻塞的時間。 存儲原理(持久化) Mongo Mongo的數(shù)據(jù)將會保存在底層文件系統(tǒng),因此存儲容量遠大于redis和memcached。一個database中所有的collections以及索...

    Vultr 評論0 收藏0

發(fā)表評論

0條評論

BicycleWarrior

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<