認(rèn)識(shí)二進(jìn)制能更快的理解計(jì)算機(jī)中的數(shù)據(jù)是怎么表現(xiàn)的澎剥。
本節(jié)必須掌握的知識(shí)點(diǎn):
1、二進(jìn)制艇炎、十六進(jìn)制相互之間的轉(zhuǎn)換
2耸成、理解計(jì)算機(jī)中的數(shù)據(jù)形式
理解進(jìn)制的概念是為我們學(xué)習(xí)二進(jìn)制做準(zhǔn)備的。在本章第一節(jié)中我們提到舌厨,計(jì)算機(jī)使用二進(jìn)制岂却,那么它為什么要使用二進(jìn)制呢?
計(jì)算機(jī)只有在有電的情況下才能工作裙椭,這是由于計(jì)算機(jī)本身是由電路組成的躏哩。而電路只有兩種狀態(tài):1、通電 2揉燃、斷電扫尺。
通過(guò)前面進(jìn)制概念的學(xué)習(xí),我們知道任何符號(hào)都可以描述進(jìn)制炊汤,需要幾個(gè)符號(hào)正驻,我們就把它描述為幾進(jìn)制。這里有“開(kāi)”抢腐、“關(guān)”兩個(gè)符號(hào)姑曙,所以它用二進(jìn)制來(lái)描述÷醣叮“開(kāi)”和“關(guān)”不便于書(shū)寫(xiě)計(jì)算伤靠,于是就用數(shù)字“1”表示“開(kāi)”,數(shù)字“0”表示“關(guān)”啼染。
每一條電路可以表示一位“0”或者“1”宴合,那么多條電路就有許多的“0”和“1”焕梅,進(jìn)而能表示多個(gè)數(shù)據(jù)。就像漢字卦洽,每一個(gè)漢字都是由一些基本的筆畫(huà)組成贞言,而不同數(shù)量、不同筆畫(huà)組成了成千上萬(wàn)個(gè)漢字阀蒂。
為什么電路狀態(tài)只有“開(kāi)”和“關(guān)”兩種狀態(tài)呢蜗字?主要因?yàn)樗苡?jì)算機(jī)硬件方面的制約,它只有“通電”和“斷電”兩種狀態(tài)脂新∨膊叮“通電”和“斷電”也可以把它轉(zhuǎn)換為邏輯關(guān)系“真”和“假”,“通電”表示“真”争便,“斷電”表示“假”级零。
隨著硬件的發(fā)展,目前已誕生出“量子計(jì)算機(jī)”滞乙,它的狀態(tài)除了“0”和“1”兩種狀態(tài)奏纪,即“真”和“假”的狀態(tài),它還有另外一種狀態(tài)斩启,即“非真非假”序调,所以量子計(jì)算機(jī)的運(yùn)算能力比我們普通的計(jì)算機(jī)的運(yùn)算能力要大很多。目前電子計(jì)算機(jī)的性能滿足我們大眾的需求兔簇,它的造價(jià)也比量子計(jì)算機(jī)低很多发绢,所以在很長(zhǎng)一段時(shí)間內(nèi),不用擔(dān)心被量子計(jì)算機(jī)淘汰垄琐。
由于計(jì)算機(jī)只認(rèn)識(shí)0和1边酒,這就意味著在計(jì)算機(jī)中存儲(chǔ)任何文件,以及接受任何指令只能由0和1組成狸窘,無(wú)論是一段音樂(lè)還是一個(gè)電影墩朦、還是軟件。我們打開(kāi)一個(gè)可執(zhí)行程序(.exe)翻擒,看一看它的內(nèi)部是不是全是二進(jìn)制數(shù)氓涣。
雙擊一個(gè)程序,我們只能看到它運(yùn)行的狀態(tài)陋气,并不能看到它的內(nèi)部情況劳吠。這里我們需要一個(gè)文本編輯軟件:UltraEdit,簡(jiǎn)稱UE恩伺,通過(guò)它能看到程序的內(nèi)部情況赴背。在后面的學(xué)習(xí)中椰拒,我們會(huì)經(jīng)常用到晶渠,大家可到UltraEdit軟件官網(wǎng)下載凰荚,也可到我們的網(wǎng)站下載已安裝這些軟件的虛擬機(jī)學(xué)習(xí)環(huán)境(網(wǎng)址?http://www.bcdaren.com/)。
這個(gè)軟件操作很簡(jiǎn)單褒脯,打開(kāi)UE便瑟,只要將需要查看的軟件(或其他文件)拖進(jìn)UE窗口,圖1-3-1我們用UE打開(kāi)一個(gè)網(wǎng)頁(yè)的情況:
圖1-3-1
中間紅色框內(nèi)就是這個(gè)程序的內(nèi)部數(shù)據(jù)番川。紅色框左邊為“文件偏移地址區(qū)域”到涂,右邊為“ASCII碼區(qū)域”,在后面我們會(huì)詳細(xì)介紹颁督。
這里有一個(gè)小問(wèn)題践啄,計(jì)算機(jī)只認(rèn)識(shí)0和1,為什么這里面的數(shù)字不是0和1呢沉御?上面的數(shù)字是十六進(jìn)制屿讽,它其實(shí)是二進(jìn)制的簡(jiǎn)寫(xiě)形式。
我們用二進(jìn)制寫(xiě)0--1111吠裆,分別是
?0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
四位二進(jìn)制數(shù)最多能表示上面的16個(gè)數(shù)伐谈,如果有1000、10000個(gè)數(shù)试疙,書(shū)寫(xiě)起來(lái)很不方便诵棵,也不便于識(shí)別。于是我們將上面的二進(jìn)制數(shù)祝旷,前面不足四位的添“0”履澳,轉(zhuǎn)化為十六進(jìn)制數(shù),如下表所示:
0000000100100011010001010110011110001001101010111100110111101111
0123456789ABCDEF
每1位十六進(jìn)制表示4位二進(jìn)制怀跛,這樣大大簡(jiǎn)化二進(jìn)制的書(shū)寫(xiě)奇昙。圖1-3-1中所有的十六進(jìn)制都能輕松地轉(zhuǎn)換為二進(jìn)制,如“2E”轉(zhuǎn)換為二進(jìn)制為“0010 1110”敌完、“B8”轉(zhuǎn)換為二進(jìn)制為“1011 1000”储耐。
在我們使用的時(shí)候依舊要把它看作為二進(jìn)制數(shù),這就要求我們熟練掌握十六進(jìn)制和二進(jìn)制之間的轉(zhuǎn)換滨溉。為什么我們?nèi)孕枰獙⑺闯墒嵌M(jìn)制數(shù)呢什湘?在CPU中,某一條電路的變化甚至?xí)绊懻麄€(gè)程序的執(zhí)行晦攒,而一條電路就是二進(jìn)制中的1位闽撤,我們用調(diào)試工具DTDebug打開(kāi)一個(gè)軟件,如圖1-3-2所示:
圖1-3-2
圖中EFL寄存器中存儲(chǔ)的數(shù)字為00000246(注意圖中箭頭位置)這是8位十六進(jìn)制數(shù)脯颜,轉(zhuǎn)換為二進(jìn)制數(shù)為:0000 0000 0000 0000 0000 0010 0100 0110哟旗,一共32位。程序執(zhí)行的過(guò)程中,它們是不斷變化的闸餐,有一些位的改變會(huì)影響程序的執(zhí)行饱亮。在我們學(xué)習(xí)操作系統(tǒng)內(nèi)核的時(shí)候,需要知道不同位所代表的不同的含義舍沙。
目前我們只需要熟練地在十六進(jìn)制與二進(jìn)制之間進(jìn)行轉(zhuǎn)換近上。理解計(jì)算機(jī)中的數(shù)據(jù)形式。
u下一節(jié)介紹數(shù)據(jù)寬度拂铡。
1壹无、熟練掌握二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換。2感帅、將下面十六進(jìn)制數(shù)轉(zhuǎn)成二進(jìn)制:????64 E9 54 F6 15 DE CD BA 18 23 47 34 A9 57 B6 19 CE FD BA 82 93 27? ? ? ??3斗锭、將下面二進(jìn)制數(shù)轉(zhuǎn)成十六進(jìn)制: ? ? ??????1101 1001 0011 0010 1100 1111 1010 1000 0011 0010 1100 1001 1001 0011 0111