国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2018-06-05 10:33:18李瑞
科教導(dǎo)刊·電子版 2018年2期
關(guān)鍵詞:存儲(chǔ)單元數(shù)據(jù)內(nèi)存

李瑞

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

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

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

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

1.1存儲(chǔ)概述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

而對(duì)于整型類型的數(shù),其在計(jì)算機(jī)內(nèi)存中是以補(bǔ)碼的方式進(jìn)行存儲(chǔ)的。正數(shù)的補(bǔ)碼就是自己的原碼,而對(duì)于負(fù)數(shù),其補(bǔ)碼是符號(hào)位之外的各位取反之后再加1。舉個(gè)例子,在32位的計(jì)算機(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語(yǔ)言程序,可以驗(yàn)證正屬于以及負(fù)整數(shù)在計(jì)算機(jī)中是如何存儲(chǔ)的,具體的程序設(shè)計(jì)如下:

﹟include”stdio.h”

main()

{

int i = -70;

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

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

}

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

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

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

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

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

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

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

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

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

010000101 11110110000000000000000

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

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

同時(shí),還可以將十六進(jìn)制數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)。例如對(duì)于十六進(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ù)點(diǎn)得到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,得到其浮點(diǎn)數(shù)是5.1999998。

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

2.1 ASCⅡ字符

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

2.2 漢字

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

3結(jié)束語(yǔ)

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

參考文獻(xiàn)

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

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

猜你喜歡
存儲(chǔ)單元數(shù)據(jù)內(nèi)存
一種28 nm工藝下抗單粒子翻轉(zhuǎn)SRAM的12T存儲(chǔ)單元設(shè)計(jì)
“春夏秋冬”的內(nèi)存
浮點(diǎn)類型有效位數(shù)計(jì)算與應(yīng)用分析
一種成本更低的全新靜態(tài)DRAM存儲(chǔ)單元
MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
焊接工藝仿真訓(xùn)練系統(tǒng)中焊點(diǎn)數(shù)據(jù)的建立方法
一種借助數(shù)據(jù)處理構(gòu)建的智能食堂管理系統(tǒng)
數(shù)據(jù)化藝術(shù)的生成探究
淺談?dòng)?jì)量自動(dòng)化系統(tǒng)實(shí)現(xiàn)預(yù)購(gòu)電管理應(yīng)用
基于內(nèi)存的地理信息訪問技術(shù)
泸溪县| 武宁县| 新干县| 金阳县| 榆树市| 宜宾县| 康保县| 玉林市| 富蕴县| 兴国县| 册亨县| 和田市| 磴口县| 土默特右旗| 乐业县| 涪陵区| 重庆市| 个旧市| 喜德县| 水城县| 资阳市| 松溪县| 灵寿县| 达州市| 张家口市| 田阳县| 永安市| 马龙县| 达尔| 莲花县| 麻江县| 中超| 丰县| 三明市| 蒲江县| 吉隆县| 蓬安县| 城口县| 宣城市| 无极县| 聂荣县|