亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        數(shù)據(jù)在計算機(jī)內(nèi)存中的存儲形式及實驗驗證

        2018-06-05 10:33:18李瑞
        科教導(dǎo)刊·電子版 2018年2期

        李瑞

        摘 要 對于現(xiàn)實生活中我們所接觸到的數(shù)據(jù)類型,在計算機(jī)中均是通過二進(jìn)制的形式,進(jìn)行存儲和計算的。對于計算機(jī)專業(yè)的學(xué)生,首先需要理解和掌握的就是各種數(shù)據(jù)類型在計算機(jī)中的存儲形式和處理方式,從而實現(xiàn)更好的掌握計算機(jī)底層的工作原理以及數(shù)據(jù)處理的各種機(jī)制。本文簡要的對相關(guān)內(nèi)容進(jìn)行的介紹,并通過C語言進(jìn)行了計算、驗證。

        關(guān)鍵詞 數(shù)據(jù) 內(nèi)存 存儲單元 小端存儲

        中圖分類號:TP391.41 文獻(xiàn)標(biāo)識碼:A

        1數(shù)值型數(shù)據(jù)在計算機(jī)中的存儲

        1.1存儲概述

        現(xiàn)將C語言作為例子,其所有的基本數(shù)據(jù)類型,均是符合人類世界和自然世界的邏輯進(jìn)行設(shè)計的。在計算機(jī)中,并沒有int、float等等類型,均是以0和1 進(jìn)行表示和描述的,所有的數(shù)據(jù)也是通過0和1在計算機(jī)中進(jìn)行存儲的。

        理解數(shù)據(jù)的存儲,最根本的問題是要了解二進(jìn)制,即計算機(jī)中數(shù)據(jù)存儲的最基本形式。

        進(jìn)制,通俗講是規(guī)定的進(jìn)位的方法,對于任何一種的進(jìn)制—X進(jìn)制,均是表示逢X進(jìn)一位,例如十進(jìn)制是逢十進(jìn)一,八進(jìn)制是逢八進(jìn)一,二進(jìn)制是逢二進(jìn)1一等等。對于不同的數(shù)據(jù),有以下方面的共同之處:(1)每一種進(jìn)制都有各自的符號集,例如二進(jìn)制的基本符號是0和1,十進(jìn)制的基本符號是0,1,2,3,4,5,6,7,8,9等等;(2)對于每一種進(jìn)制,均使用位置表示法,也就是說在在不同位置的數(shù),其代表的值有所不同,例如,對于十進(jìn)制數(shù)1234.55,可以表示為:1234.55 = 1*10^3+2*10^2+3*10^1+4*10^0+5*10^(-1)+5*10^(-2)。對于任何一種進(jìn)制的數(shù)值,均可以按照不同的權(quán)值進(jìn)行展開。

        在人類的思維模式中,十進(jìn)制是普遍的使用方式,計算機(jī)是使用二進(jìn)制的,編程人員則需要與計算器直接進(jìn)行交流。舉個例子,現(xiàn)給一串二進(jìn)制數(shù)“0000 1010 1111 0101 1000 1111 1111 1111”,任何人看到都會不知所云,如果直接使用十進(jìn)制,則不能準(zhǔn)確的表達(dá)計算機(jī)的思維方式,因此出現(xiàn)了八進(jìn)制和十六進(jìn)制,十六進(jìn)制應(yīng)用的更加廣泛一些,對于前文中提到的二進(jìn)制數(shù),轉(zhuǎn)換成八進(jìn)制,32./3余2,則還需要在前面加0,但是轉(zhuǎn)換成十六進(jìn)制,32/4=8,可以直接寫成十六進(jìn)制對應(yīng)的八個數(shù)值代表的字符串,更加的簡單和明了。

        1.2整數(shù)在計算機(jī)中的存儲方式

        在32位的計算機(jī)系統(tǒng)中,對于整數(shù)的范圍是指,也即是說-2147483648~ +2147483647。

        對于整數(shù)的原碼,是通過二進(jìn)制的形式表現(xiàn)的,二進(jìn)制的最高位是符號位,對于正數(shù),符號位是0,對于負(fù)數(shù),符號位是1。數(shù)值X的原碼記為[X]原,如果在計算機(jī)中的表示長度為n,最高位表示符號位,其余位表示數(shù)值的絕對值。原碼在計算正數(shù)與正數(shù)的時候,不存在問題,但是出現(xiàn)負(fù)數(shù)的時候,則會出現(xiàn)問題。

        數(shù)值X的反碼記作[X]反,如果在計算機(jī)中的表示長度為n,最高位表示符號位,正數(shù)的反碼與原碼相同,負(fù)數(shù)的反碼是原碼的絕對值按位取反得到。

        數(shù)值X的補(bǔ)碼記為[X]補(bǔ),如果在計算機(jī)中的表示長度為n,最高位表示符號位,正數(shù)的補(bǔ)碼與原碼、反碼相同,負(fù)數(shù)的補(bǔ)碼是其反碼的末尾加1。在計算機(jī)中表達(dá)帶符號的整數(shù)時,一般均采用補(bǔ)碼,補(bǔ)碼的引入,符號位不再約束計算,補(bǔ)碼的最高位雖然是1,但是不再是符號位,而是普通的二進(jìn)制位,可以參與運(yùn)算。

        舉個例子,對于+70和-70,其在32位的計算機(jī)系統(tǒng)中,其原碼分別表示為:

        [+70] 原碼 = 0000 0000 0000 0000 0000 0000 0100 0110,

        [-70] 原碼 = 1000 0000 0000 0000 0000 0000 0100 0110。

        對于整數(shù)0,其原碼有以下兩個:

        [+0] 原碼 = 0000 0000 0000 0000 0000 0000 0000 0000,

        [-0] 原碼 = 1000 0000 0000 0000 0000 0000 0000 0000。

        而對于整型類型的數(shù),其在計算機(jī)內(nèi)存中是以補(bǔ)碼的方式進(jìn)行存儲的。正數(shù)的補(bǔ)碼就是自己的原碼,而對于負(fù)數(shù),其補(bǔ)碼是符號位之外的各位取反之后再加1。舉個例子,在32位的計算機(jī)系統(tǒng)中,+70和-70的補(bǔ)碼可以分別表示為:

        [+70] 補(bǔ)碼 = 0000 0000 0000 0000 0000 0000 0100 0110 = 0x46,

        [-70] 補(bǔ)碼 = 1000 0000 0000 0000 0000 0000 1011 1010 = 0xffffffba。

        通過編寫C語言程序,可以驗證正屬于以及負(fù)整數(shù)在計算機(jī)中是如何存儲的,具體的程序設(shè)計如下:

        ﹟include”stdio.h”

        main()

        {

        int i = -70;

        printf(“%d在計算機(jī)內(nèi)存儲和計算形式為:%x\n”,i,i);

        printf(“%d在計算機(jī)內(nèi)存儲和計算形式為:%x\n”,-i,-i);

        }

        在Linux系統(tǒng)中,通過gcc編譯器,編譯之后的結(jié)果顯示為:

        -70在計算機(jī)內(nèi)存存儲和計算形式為:ffffffba

        70在計算機(jī)內(nèi)存和計算形式為:46

        通過程序語言,直觀的顯示驗證了對于正整數(shù),其在內(nèi)存中是以原碼的形式進(jìn)行存儲的,對于負(fù)整數(shù),其在內(nèi)存中是以補(bǔ)碼的形式進(jìn)行存儲的,兩者在計算機(jī)的內(nèi)存中都占據(jù)了四個單位的存儲單元。

        1.3小數(shù)在計算機(jī)內(nèi)存中的存儲

        對于實數(shù),其在計算機(jī)中的存儲形式有浮點型(float)和雙精度型(double)兩種類型,雙精度型的存儲空間以及計算精度均要高于浮點型。在IntelCPU架構(gòu)的系統(tǒng)中,是以小端模式(Little Endian)進(jìn)行存放的,具體是指低字節(jié)存放在低地址,一個存儲單元中存儲一個字節(jié)的內(nèi)容。對于目前使用的C/C++編譯器,其使用的均是EEE定制的標(biāo)準(zhǔn)浮點格式,也就是 我們經(jīng)常所說的二進(jìn)制科學(xué)表示法,實數(shù)S可以表示為S = M * 2N,主要包括三部分內(nèi)容:符號位、尾數(shù)(M)以及階碼(N)。對于浮點型(float)的實數(shù),其存儲空間占據(jù)了32位的存儲單元,其中符號位占據(jù)了1位,尾數(shù)占據(jù)了32位,階碼占據(jù)了8位;對于雙精度型(double)的實數(shù),其存儲空間占據(jù)了64位的存儲空間,其中符號位占據(jù)了1位,尾數(shù)占據(jù)了52位,階碼占據(jù)了11位。

        階碼:通過移碼進(jìn)行表示,對于浮點型(float)類型的數(shù)據(jù),其規(guī)定的偏置量是127,階碼有正值有負(fù)值,八位二進(jìn)制的表示范圍是從-128到127;對于雙精度型(double)類型的數(shù)據(jù),其規(guī)定的偏置量是1023,其表示范圍是從-1024到1023。對于浮點型類型的數(shù)據(jù),假設(shè)階碼的真實值是2,加上127,就是 129,相應(yīng)的階碼是10000001。

        尾數(shù):部分的二進(jìn)制位即小數(shù)點后面的二進(jìn)制位,是有效數(shù)字位,規(guī)定尾數(shù)M的整數(shù)部分一直是1,故1不再進(jìn)行保存。

        舉個例子,推導(dǎo)浮點型實數(shù)125.5,在計算機(jī)中是如何進(jìn)行存儲的。首先把125.5轉(zhuǎn)換為二進(jìn)制的形式,即為1111101.1,因為尾數(shù)部分固定是1,所以表示為1.1111011*2^6,故階碼是6,加上127,則是133,對應(yīng)的二進(jìn)制表示為10000101,尾數(shù)把整數(shù)部分的1去掉,則表示為1111011,位數(shù)一共是23位,在其后面補(bǔ)0,則表示為11110110000000000000000。因此125.5對應(yīng)的二進(jìn)制形式是:

        010000101 11110110000000000000000

        這在計算機(jī)內(nèi)存中占據(jù)了4個單位的內(nèi)存單元,

        可以將浮點數(shù)換算為十六進(jìn)制數(shù),例如將5.2f換算成十六進(jìn)制數(shù),首先,正數(shù)部分5,其四位的二進(jìn)制數(shù)是0101,其次小數(shù)部分0.2,對應(yīng)的二進(jìn)制數(shù)是0.001 1001 1……這里的省略號表示沒有辦法計算完,是無限循環(huán),因此只取32位,則為:101.001 1001 1001 1001 10011,使用科學(xué)計數(shù)法表示為:1.01001 1001 1001 1001 10011*22,考慮到偏置量,正數(shù)最高位為1,即為0 1000 0001 0100 1100 1100 1100 1100 110,其對應(yīng)的十六進(jìn)制是40A66666,這就是5.2的最終整數(shù)形式。

        同時,還可以將十六進(jìn)制數(shù)轉(zhuǎn)換為浮點數(shù)。例如對于十六進(jìn)制0X40A66666,換算成二進(jìn)制為0100 0000 1010 0110 0110 0110 0110 0110,最高位是0,所以是正數(shù),接下類的八位換成十進(jìn)制就是12910,進(jìn)行逆運(yùn)算,129 – 127 = 2,指數(shù)為2,剩下的23位補(bǔ)1得到:1010 0110 0110 0110 0110 0110,加上小數(shù)點得到1.010 0110 0110 0110 0110 0110 * 22,通過科學(xué)技術(shù)法,得到相應(yīng)的二進(jìn)制小數(shù)為101.0 0110 0110 0110 0110 011 0,正數(shù)部分是5,小數(shù)部分進(jìn)行逆運(yùn)算,可以表示為0 .0 0110 0110 0110 0110 0110,得到其浮點數(shù)是5.1999998。

        2非數(shù)值型數(shù)據(jù)在計算機(jī)內(nèi)存中的存儲

        2.1 ASCⅡ字符

        對于標(biāo)準(zhǔn)ASCⅡ字符和擴(kuò)展ASCⅡ字符,均是一個字節(jié)的編碼,所以標(biāo)準(zhǔn)ASCⅡ字符和擴(kuò)展ASCⅡ字符在計算機(jī)內(nèi)存中均是占據(jù)了一個單元的存儲單元。舉個例子,對于字符‘A,其在計算機(jī)內(nèi)存中占據(jù)一個單元的存儲單元,相應(yīng)的值是0x41;對于字符‘a(chǎn),其在計算機(jī)內(nèi)存中占據(jù)一個單元的存儲單元,相應(yīng)的值是0x61;對于字符‘$,其在計算機(jī)內(nèi)存中占據(jù)一個單元的存儲單元,相應(yīng)的值是0x24。

        2.2 漢字

        其實,對于任何字符,都可以類似于漢字這樣,進(jìn)行相應(yīng)的編碼,編碼方式無論是GB2312,還是UNICODE編碼,還是UTF16編碼,其在內(nèi)存中是如何進(jìn)行存儲的,都可以通過這樣的方式進(jìn)行相應(yīng)的分析和討論。

        3結(jié)束語

        所有的基本數(shù)據(jù)類型,均是符合人類世界和自然世界的邏輯進(jìn)行設(shè)計的。在計算機(jī)中,并沒有int、float等等類型,均是以0和1 進(jìn)行表示和描述的,所有的數(shù)據(jù)也是通過0和1在計算機(jī)中進(jìn)行存儲的,因此,了解不同類型的數(shù)據(jù)類型具有十分重要的意義。本文對我們接觸到的各種類型的數(shù)據(jù),例如正整數(shù)、負(fù)數(shù)、雙精度小數(shù)、浮點小數(shù)、非數(shù)值型等等,進(jìn)行了簡單的介紹,概述了其在計算機(jī)系統(tǒng)中占據(jù)的內(nèi)存存儲空間大小,本文簡要的對相關(guān)內(nèi)容進(jìn)行的介紹,并通過C語言進(jìn)行了計算、驗證。對于計算機(jī)專業(yè)及想了解相關(guān)知識的學(xué)生,首先需要理解和掌握的就是各種數(shù)據(jù)類型在計算機(jī)中的存儲形式和處理方式,從而實現(xiàn)更好的掌握計算機(jī)底層的工作原理以及數(shù)據(jù)處理的各種機(jī)制。通過本文的研究,希望對于計算機(jī)專業(yè)的學(xué)生有一定的借鑒和指導(dǎo)意義。

        參考文獻(xiàn)

        [1] 吳艷婷,方賢進(jìn). 數(shù)據(jù)在計算機(jī)內(nèi)存中的存儲形式及實驗驗證[J].安慶師范學(xué)院學(xué)報(自然科學(xué)版),2016,22(04):152-154.

        [2] IKIPEDIA,W.Twos complement [DB/OL]. https : // en . wikipediaorg / wiki / Two % 27s_compkement.

        久热香蕉av在线爽青青| 99国产精品久久久蜜芽| 无遮无挡爽爽免费视频| 久久水蜜桃亚洲av无码精品麻豆| 日本岛国视频在线观看一区二区| 蜜臀av一区二区三区免费观看| 免费无码a片一区二三区| 国产尤物AV尤物在线看| 国产一区,二区,三区免费视频 | 国产一区二区激情对白在线| 精品一区二区三区女同免费| 久久亚洲AV无码一区二区综合| 国产精品一区二区av白丝在线| 中文国产乱码在线人妻一区二区| 国产无夜激无码av毛片| 欧美午夜一区二区福利视频| 久久久9色精品国产一区二区三区| 亚洲精品第四页中文字幕| 2021国产精品视频网站| 大肉大捧一进一出视频出来呀| 国产91对白在线观看| 亚洲福利一区二区不卡| 亚洲综合中文字幕日韩| 人禽交 欧美 网站| 中文字幕在线亚洲一区二区三区| 亚洲一区二区三区在线观看| 中文字幕一区二区中出后入| 毛片内射久久久一区| 成人午夜无人区一区二区| 亚洲av高清一区二区| 伊人久久精品亚洲午夜| 99久久亚洲精品日本无码| 亚洲日韩乱码中文无码蜜桃臀| 加勒比精品一区二区三区| 亚洲精品中文字幕一二 | 亚洲乱码中文字幕三四区| 国内精品久久久久伊人av| 激情综合欧美| 一区二区亚洲精美视频| 噜噜综合亚洲av中文无码| 精品水蜜桃久久久久久久|