999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

李瑞

摘 要 對于現(xiàn)實生活中我們所接觸到的數(shù)據(jù)類型,在計算機中均是通過二進(jìn)制的形式,進(jìn)行存儲和計算的。對于計算機專業(yè)的學(xué)生,首先需要理解和掌握的就是各種數(shù)據(jù)類型在計算機中的存儲形式和處理方式,從而實現(xiàn)更好的掌握計算機底層的工作原理以及數(shù)據(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ù)在計算機中的存儲

1.1存儲概述

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

理解數(shù)據(jù)的存儲,最根本的問題是要了解二進(jìn)制,即計算機中數(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ìn)制的,編程人員則需要與計算器直接進(jìn)行交流。舉個例子,現(xiàn)給一串二進(jìn)制數(shù)“0000 1010 1111 0101 1000 1111 1111 1111”,任何人看到都會不知所云,如果直接使用十進(jìn)制,則不能準(zhǔn)確的表達(dá)計算機的思維方式,因此出現(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ù)在計算機中的存儲方式

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

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

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

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

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

[+70] 補碼 = 0000 0000 0000 0000 0000 0000 0100 0110 = 0x46,

[-70] 補碼 = 1000 0000 0000 0000 0000 0000 1011 1010 = 0xffffffba。

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

﹟include”stdio.h”

main()

{

int i = -70;

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

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

}

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

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

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

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

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

對于實數(shù),其在計算機中的存儲形式有浮點型(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ì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位,在其后面補0,則表示為11110110000000000000000。因此125.5對應(yīng)的二進(jìn)制形式是:

010000101 11110110000000000000000

這在計算機內(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)行逆運算,129 – 127 = 2,指數(shù)為2,剩下的23位補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)行逆運算,可以表示為0 .0 0110 0110 0110 0110 0110,得到其浮點數(shù)是5.1999998。

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

2.1 ASCⅡ字符

對于標(biāo)準(zhǔn)ASCⅡ字符和擴(kuò)展ASCⅡ字符,均是一個字節(jié)的編碼,所以標(biāo)準(zhǔn)ASCⅡ字符和擴(kuò)展ASCⅡ字符在計算機內(nèi)存中均是占據(jù)了一個單元的存儲單元。舉個例子,對于字符‘A,其在計算機內(nèi)存中占據(jù)一個單元的存儲單元,相應(yīng)的值是0x41;對于字符‘a(chǎn),其在計算機內(nèi)存中占據(jù)一個單元的存儲單元,相應(yīng)的值是0x61;對于字符‘$,其在計算機內(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è)計的。在計算機中,并沒有int、float等等類型,均是以0和1 進(jìn)行表示和描述的,所有的數(shù)據(jù)也是通過0和1在計算機中進(jìn)行存儲的,因此,了解不同類型的數(shù)據(jù)類型具有十分重要的意義。本文對我們接觸到的各種類型的數(shù)據(jù),例如正整數(shù)、負(fù)數(shù)、雙精度小數(shù)、浮點小數(shù)、非數(shù)值型等等,進(jìn)行了簡單的介紹,概述了其在計算機系統(tǒng)中占據(jù)的內(nèi)存存儲空間大小,本文簡要的對相關(guān)內(nèi)容進(jìn)行的介紹,并通過C語言進(jìn)行了計算、驗證。對于計算機專業(yè)及想了解相關(guān)知識的學(xué)生,首先需要理解和掌握的就是各種數(shù)據(jù)類型在計算機中的存儲形式和處理方式,從而實現(xiàn)更好的掌握計算機底層的工作原理以及數(shù)據(jù)處理的各種機制。通過本文的研究,希望對于計算機專業(yè)的學(xué)生有一定的借鑒和指導(dǎo)意義。

參考文獻(xiàn)

[1] 吳艷婷,方賢進(jìn). 數(shù)據(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| 欧美国产日韩在线观看| 色婷婷狠狠干| 国产福利在线观看精品| 午夜欧美理论2019理论| 国产精品无码久久久久AV| 欧美成人亚洲综合精品欧美激情| 精品夜恋影院亚洲欧洲| 91美女视频在线观看| 九九热在线视频| 综合色婷婷| 欧美成人手机在线观看网址| 色爽网免费视频| 国产成熟女人性满足视频| 麻豆国产精品视频| 好吊日免费视频| 国产交换配偶在线视频| 日韩欧美国产成人| 九九九久久国产精品| 色播五月婷婷| 亚洲码一区二区三区| 丁香六月激情综合| 亚洲色大成网站www国产| 免费人成视网站在线不卡| 99久久精品免费看国产免费软件| 欧美日韩国产精品va| 久久国产乱子| 久久国产拍爱| 亚洲人成成无码网WWW| 国产一级α片| 久久久久青草线综合超碰| 国产一级α片| 亚洲一区二区三区国产精品| 亚洲精品制服丝袜二区| www中文字幕在线观看| 欧美精品1区2区| 亚洲无码高清视频在线观看| 国产激情影院| 伊大人香蕉久久网欧美| 久久综合九色综合97婷婷| 亚洲精品天堂在线观看| 99视频在线看| 欧美日韩成人在线观看| 亚洲福利一区二区三区| 国产97视频在线观看| 免费高清a毛片| 欧美中日韩在线| 国产精品视屏| 国产三级国产精品国产普男人| 国产麻豆另类AV| 亚洲一欧洲中文字幕在线| 成人在线视频一区| 欧美日本二区| 91福利在线观看视频| 天天色天天操综合网| 久久不卡国产精品无码| 日韩AV手机在线观看蜜芽| 狠狠干欧美| 久久中文无码精品| 成人亚洲国产| 精品国产福利在线| 国产www网站| 国产在线拍偷自揄拍精品| 91偷拍一区| 国产一区二区三区精品欧美日韩| 国产一区二区影院| 国产喷水视频| 久久无码免费束人妻| 亚洲av无码片一区二区三区| 99青青青精品视频在线| 欧美在线国产| 午夜精品区| 最新国产麻豆aⅴ精品无| 性色在线视频精品| 欧美一级黄片一区2区| 国产在线视频二区| 欧美午夜理伦三级在线观看| 欧美日韩导航| 久久福利网| 国产电话自拍伊人|