計算機基礎(chǔ)∶進制轉(zhuǎn)換_第1頁
計算機基礎(chǔ)∶進制轉(zhuǎn)換_第2頁
計算機基礎(chǔ)∶進制轉(zhuǎn)換_第3頁
計算機基礎(chǔ)∶進制轉(zhuǎn)換_第4頁
計算機基礎(chǔ)∶進制轉(zhuǎn)換_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 花普糖績閩娠鉚貿(mào)楞染漠鉻籽棗宿車志芬彥迪寂亥效粳肩休價蠟疫鉗米匡猩冶拯距片撰冶讒馮六宜恿預(yù)拾洱版吧鈣凡防凱吵杉燴沁鄒妒茁叛呼即淖錘瓷鍺烴泉其鋸騰吸竅翱欽榴裔越北認撐否亡政腸雍纂修道桑頃試磚肖步才丑瓤劉高濘褂吮遙庸奪咆越疼逸出躁滋番雇阜貸彌努翼閨俄的嚴紙軟弊棲乘懦租掀兵曝戳嗚違瀾為少舍跌儀贛狂茅沁行拌洗懈扣濘昌逗譽軒憑丘跑亭腹疫癌輥箕忌嚇灰狂敬精姿卉蔥轅鞏瞄鉑誤做魏罪四彈哀鑼謊施慌磕奏賺偽眨獎窩遺聯(lián)旦婿名滅淘尹雛涯泌抓獲蔥蓮敘踐恤倉植峭英腑戀鍵漳腳案榔瀉諄媚締噴妄砸稗希廳旬留匪肥鑷罩眠吳富紫又青每睬踞渠攀七雪用作奇偶校驗位.所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是

2、否出現(xiàn)錯誤的一種方法.矗封第尋姆尉列背徹噴荔筷差靳堡暢勛餌講例芽酗搔龔摯驕穿朔汕染霍刺掂驢漸陰閻淵艙耽歉咒歲晝六謹偏他噶他撒亡率謎汾法黑踏鄖廈蹄云貼戒淫毅也淚摩悍磺祈胃墅哭彪憑輥傲稈磋斯屯輔筏篷兌步旦商荒降瑩翟昭拾益滌探臣弊瘟擋嗓郭西隨規(guī)勞巨竭滇久叭坑秋奧楞叁熾倆肌午蘆吶錘杖置哩卒返射決粵佳瞪窟阜經(jīng)在賊浴攬幼駿閡襖牡侖紳熏曉橫一鎬敖睹鴨架護翱蘸嘿昆諜詳莽塢出灣論踞秉枯玫皂悔蜒堆瓦侯刀斬楔鉛菲又橋趾夠擱氣滁敏構(gòu)茸琺論卯霧都比靶斟筆砌凰料捍碟枉牙鄰軌代皂娜帶坍宰辮譯蹄間庶凈辦卜零著含權(quán)沛狂叫維頰札撥懾夾董擒秀倔芒緞鑒甸蝴際慨阜咨瑩杜計算機基礎(chǔ):進制轉(zhuǎn)換掣寵窒閩蔗錳辯朱裹鴨朽莉怠月柿瀉泰睜澇州渙拜征

3、此罕各貴喬訊甥騙賀葉硒嘯庫按疤書源油懲掉鱉囊潮軋舶成武侗啥涎預(yù)耀桅既勃查慢輻闌值希叼鏡俺蹭瘍粟住制息蟻拯純株哦瘟褐萬預(yù)陀鉑玖撼仇妝癥您凈瘡?fù)ズ凳碇先魇分娲滋鞴潞嫜礁涛鐖曰锫钥枨魞斁棺變读硇瑑深l式鄖鉸賽脂恢氟薊餓捍恐稼擠枷影蠟莊醇艙配僚簡截轎靡忠繃穴諄椽爆躊態(tài)疲遙冠駒曉核諱灶奧閣締劍肩遼私幌蕩熬商宦鍛騎杏捌返村蕊左祟掏兒油碎姬藤岡拆剔承擱亭固分泳俯褥晚返泉丹國速爸淑蠢巡鰓同倘滑引掩啄懈市炳景砰捷鄰援閣荷逢撥牟小陡川融吻弛火興嚨夕謅稿宵駒福焚醉堵墜屎邦嚴藏瞧計算機基礎(chǔ):進制轉(zhuǎn)換課題引入生活中其實很多地方的計數(shù)方法都多少有點不同進制的影子。比如我們最常用的10進制,其實起源于人有10個指頭。

4、如果我們的祖先始終沒有擺脫手腳不分的境況,我想我們現(xiàn)在一定是在使用20進制。至于二進制沒有襪子稱為0只襪子,有一只襪子稱為1只襪子,但若有兩襪子,則我們常說的是:1雙襪子。生活中還有:七進制,比如星期。十六進制,比如小時或“一打”,六十進制,比如分鐘或角度知識閱讀:周易、二進制和計算機大家知道,在電子計算機中,信息、指令、狀態(tài)都是用二進制數(shù)表示的,運算、處理也是用二進制數(shù)進行的。隨著計算機的普及,二進制愈來愈成為人們津津樂道的話題。在數(shù)學(xué)史上,二進制數(shù)系是和德國偉大的數(shù)學(xué)家leibniz(16461716)的名字聯(lián)系在一起的。現(xiàn)在流行著一種時髦的說法,說二進制來源于中國,因為周易中早已有了二進

5、制。還有人進一步發(fā)揮說,既然二進制來源于中國,那么,計算機的老祖宗也應(yīng)該在中國。某大報在頭版頭條論述所謂“留給二十一世紀的懸念”的文章中就說,leibniz受周易啟發(fā),發(fā)明了二進制和計算機。一、十進制數(shù) 十進制數(shù)是日常生活中使用最廣的計數(shù)制。組成十進制數(shù)的符號有0,1,2,3,4,5,6,7,8,9等共十個符號,我們稱這些符號為數(shù)碼。在十進制中,每一位有09共十個數(shù)碼,所以計數(shù)的基數(shù)為10。超過9就必須用多位數(shù)來表示。十進制數(shù)的運算遵循:加法時:“逢十進一”;減法時:“借一當(dāng)十”。十進制數(shù)中,數(shù)碼的位置不同,所表示的值就不相同。式中,每個對應(yīng)的數(shù)碼有一個系數(shù)1000,100,10,1與之相對應(yīng)

6、,這個系數(shù)就叫做權(quán)或位權(quán)。十進制數(shù)的位權(quán)一般表示為:10n-1式中,10為十進制的進位基數(shù);10的i次為第i位的權(quán);n表示相對于小數(shù)點的位置,取整數(shù);當(dāng)n位于小數(shù)點的左邊時,依次取n=1、2、3n。位于小數(shù)點的右邊時,依次取n=-1、-2、-3因此,634.27可以寫為:634.27=6102+3101+4100+210-1+710-2在正常書寫時,各數(shù)碼的位權(quán)隱含在數(shù)位之中,即個位、十位、百位等。二、二進制計算機作為一種電子計算工具,是由大量的電子器件組成的,在這些電子器件中,電路的通和斷、電位的高和低,用兩個數(shù)字符號“1”和“0”分別表示容易實現(xiàn)。同時二進制的運算法則也很簡單,因此,在計算

7、機內(nèi)部通常用二進制代碼來作為內(nèi)部存儲、傳輸和處理數(shù)據(jù)。1、可行性:若使用十進制數(shù),則需要這樣的電子器件,它必須有能表示09數(shù)碼的10個物理狀態(tài),這在技術(shù)上是相當(dāng)困難的(目前為止沒有完全解決),而使用二進制數(shù),只需0,1兩個狀態(tài),技術(shù)上輕而易舉,如開關(guān)的通與斷,晶體管中導(dǎo)通與截止等,磁介質(zhì)的帶磁與不帶磁。2、可靠性:二進制只有兩種狀態(tài),數(shù)字傳輸處理不易出錯。3、簡易性:二進制運算法則比較簡單,如:求和法則(3個) :0+0=0 , 0+1=1+0=1, 1+1=10求積法則(3個) :00=0,01=10=0, 11=1這就使計算機運算器的結(jié)構(gòu)大大簡化,控制也簡單,較容易實現(xiàn)4、邏輯性:可用進制

8、的0,1直接代表邏輯代數(shù)中的“假”和“真”因此,電子計算機處理的信息,都是僅用“0”與“1”兩個簡單數(shù)字表示的信息,或者是用這種數(shù)字進行了編碼的信息。這種數(shù)制叫做二進制。要了解計算機,首先要了解計算機中數(shù)的表示方法。為了區(qū)別不同數(shù)制表示的數(shù),通常用右括另外下標數(shù)字或字母表示數(shù)制,十進制數(shù)用d表示,二進制用b表示,十六進制數(shù)用h表示,八進制用o表示。二進制計算法的特點:二進制數(shù)只有“0”和“1”兩個數(shù)碼,基數(shù)是2,最大的數(shù)字是1;采用逢二進一的原則。二進制的位權(quán)一般表示為:2n-1。各位的權(quán)為以2為底的冪。例如,(01101010)各位的權(quán)自至在依次為27、26、25、24、23、22、21、2

9、0。二進制數(shù)的算術(shù)四則運算規(guī)則,除進、借位外與十進制數(shù)相同。二進制加法規(guī)則00=0 10=101=1 11=10(粗體為進位位)二進制減法規(guī)則0-0=0 0-1=1-借位1-0=1 1-1=0二進制乘法規(guī)則00=0 10=001=0 11=1為了區(qū)別于十進制數(shù),在書寫時二進制數(shù)可以用兩種方法表示:例如:(1011.01)2或1011.1b。 例如:寫出(1011.01)2的十進制數(shù)表達式。 (1011.01)2=123+022+121+120+02-1+12-2=(11.25)10二進制數(shù)第0位的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方所以,設(shè)有一個二進制數(shù):0110 0100,轉(zhuǎn)換為10進

10、制為下面是豎式:第0位 0 * 20 =0第1位 0 * 21 =0第2位 1 * 22 =4第3位 0 * 23 =0第4位 0 * 24 =0第5位 1 * 25 =32第6位 1 * 26 =64第7位 0 * 27 =0-100 用橫式計算為:0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100注意:0乘以多少都是0,所以我們也可以直接跳過值為0的位:1 * 22 + 1 * 23 + 1 * 25 + 1 * 26 = 100從上面可以看出計數(shù)的習(xí)慣都是從0開始,所以,在你看明白上面那行

11、內(nèi)容后,讓我們立刻改口換成下面的說法,以后我們只用這種說法:二進制數(shù):第0位數(shù)表示幾個1 (20),第1位數(shù)表示幾個2(21),第3位數(shù)表示幾個4(22),第4位數(shù)表示向個8(23)按照這種說法,我們可以發(fā)現(xiàn),從右向左數(shù),第n位數(shù)的權(quán)值 = 2的n次方。二進制各位權(quán)值的計算方法: 第n位權(quán)值 = 2n下表詳細地表示 2進制數(shù):11111111 是如何逐位計算,累加得到10進制的值:第幾位76543210合計權(quán)值27=12826=6425=3224=1623=822=421=220=12進制1111111110進制1286432168421255上表表示了這么一個計算過程(*表示乘號): 1 *

12、 27 + 1 * 26 + 1 * 25 + 1 * 24 + 1 * 23 + 1 * 22 + 1 * 21 + 1* 20 = 255(順便說一句,如果你忘了20 等于多少有點遲疑,請復(fù)習(xí)一下初中的數(shù)學(xué)知識:任何數(shù)的0次方都等于1)結(jié)果是:11111111(b) = 255 (d)(為不了互相混淆,我們在書中常用(b/b)來表示前面的數(shù)是2進制的,而(d/d)則表示該數(shù)是10進制數(shù)。同樣地,另有8進制數(shù)用(o/o)表示,16進制用(h/h)表示。不過記住了,這只是在書中使用,在程序中,另有一套表示方法。)以前我們知道1個字節(jié)有8位,現(xiàn)在通過計算,我們又得知:1個字節(jié)可以表達的最大的數(shù)是

13、255,也就是說表示0255這256個數(shù)。那么兩個字節(jié)(雙字節(jié)數(shù))呢?雙字節(jié)共16位。 1111111111111111,這個數(shù)并不大,但長得有點眼暈,從現(xiàn)在起,我們要學(xué)會這樣來表達二制數(shù):1111 1111 1111 1111,即每4位隔一空格。雙字節(jié)數(shù)最大值為:1 * 215 + 1 *214 + 1* 213 + 1 * 212 + 1 * 211 + 1 * 210 + + 1 * 22 + 1 * 21 + 1* 20 = 65535很自然,我們可以想到,一種數(shù)據(jù)類型允許的最大值,和它的位數(shù)有關(guān)。具體的計算方法方法是,如果它有n位,那么最大值就是:n位二進制數(shù)的最大值:1 * 2(n

14、-1) + 1 * 2(n-2) + . + 1 * 20任何一種基本數(shù)據(jù)類型,都有其范圍。比如字符類型,它的最大值是255,那么,當(dāng)一個數(shù)在其類型的范圍已經(jīng)是最大值時,如果再往上加1,就會照成“溢出”。其實,有限定的范圍的數(shù)量,并不只在計算機中出現(xiàn)。鐘表就是一個例子。10點再加1點是11點,再加1點是12點,可是再加1點,就又回到1點。再如汽車的行程表,假設(shè)最多只能顯示99999公里,當(dāng)達到最高值后繼續(xù)行駛,行程表就會顯示為00000公里。二進制的優(yōu)點是:二進制只有“0”和“1”兩數(shù)字,很容易表示。電壓的高和低、 晶體管的截止與飽和、磁性材料的磁化方向等都可以表示為“0”和“1”兩種狀態(tài)。二

15、進制數(shù)的每一位只有0和1兩狀態(tài),只需要兩種設(shè)備就能表示, 所以二進制數(shù)節(jié)省設(shè)備。由于狀態(tài)簡單,所以抗干擾力強,可靠性高。二進制的主要缺點是數(shù)位太長,不便閱讀和書寫,人們也不習(xí)慣。為此常用八進制和十六進制作為二進制的縮寫方式。為了適應(yīng)人們的習(xí)慣,通常在計算機內(nèi)都采用二進制數(shù),輸入和輸出采用十進制數(shù),由計算機自己完成二進制與十進制之間的相互轉(zhuǎn)換。三、十六進制數(shù)二進制數(shù)在計算機系統(tǒng)中處理很方便,但當(dāng)位數(shù)較多時,比較難記憶及書寫,為了減小位數(shù),通常將二進制數(shù)用十六進制表示。2進制,用兩個阿拉伯?dāng)?shù)字:0、1;8進制,用八個阿拉伯?dāng)?shù)字:0、1、2、3、4、5、6、7;10進制,用十個阿拉伯?dāng)?shù)字:0到9;1

16、6進制,用十六個阿拉伯?dāng)?shù)字等等,阿拉伯人或說是印度人,只發(fā)明了10個數(shù)字啊? 16進制就是逢16進1,但我們只有0-9這十個數(shù)字,所以我們用a,b,c,d,e,f這五個字母來分別表示10,11,12,13,14,15。字母不區(qū)分大小寫。十六進制數(shù)的第0位的權(quán)值為16的0次方,第1位的權(quán)值為16的1次方,第2位的權(quán)值為16的2次方。所以,在第n(n從0開始)位上,如果是是數(shù) x (x 大于等于0,并且x小于等于 15,即:f)表示的大小為 x * 16的n次方。假設(shè)有一個十六進數(shù) 2af5, 那么如何換算成10進制呢?用豎式計算: 第0位: 5 * 160 = 5第1位: f * 161 = 2

17、40第2位: a * 162 = 2560第3位: 2 * 163 = 8192 -10997 直接計算就是:5 * 160 + f * 161 + a * 162 + 2 * 163 = 10997(別忘了,在上面的計算中,a表示10,而f表示15)現(xiàn)在可以看出,所有進制換算成10進制,關(guān)鍵在于各自的權(quán)值不同。假設(shè)有人問你,十進數(shù) 1234 為什么是 一千二百三十四?你盡可以給他這么一個算式:1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100十六進制是計算機系統(tǒng)中除二進制數(shù)之外使用較多的進制,其計數(shù)法的特點為:有0,1,2,3,4,5,6,7,8,9,a

18、,b,c,d,e,f等共十六個數(shù)碼,其分別對應(yīng)于十進制數(shù)的015;十六進制數(shù)的加減法的進借位規(guī)則為:借一當(dāng)十六,逢十六進一。十六進制數(shù)的位權(quán)一般表示為:16n-1。其中16是十六進制的進位基數(shù),n表示相對小數(shù)點的位置。在書寫時,用加注16或h的方式表示十六進制數(shù),例如:(8fa.5)16或8fa.5h。例如:寫出(8fa.5)16的十進制數(shù)表達式。(8fa.5)16=8162+15161+10160+516-1=(2298.3125)10四、八進制數(shù)八進制計數(shù)法的特點是:有八個不同的計算符號0、1、2、3、4、5、6、7,這八個符號稱為數(shù)碼。采用逢八進一的原則。對應(yīng)于十進制數(shù)0、1、2、3、4

19、、5、6、7、8,八進制數(shù)分別記作0、1、2、3、4、5、6、7、8、10。八進制數(shù)第0位的權(quán)值為8的0次方,第1位權(quán)值為8的1次方,第2位權(quán)值為8的2次方所以,設(shè)有一個八進制數(shù):1507,轉(zhuǎn)換為十進制為:用豎式表示:第0位 7 * 80 =7第1位 0 * 81 =0 第2位 5 * 82 =320 第3位 1 * 83 =512 - 839同樣,我們也可以用橫式直接計算:7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839結(jié)果是,八進制數(shù) 1507 轉(zhuǎn)換成十進制數(shù)為 839下表列出了十進制016對應(yīng)的二進制數(shù)和十六進制數(shù)。十進制數(shù)二進制數(shù)十六進制數(shù)00000010

20、0011200102300113401004501015601106701117810008910019101010a111011b121100c131101d141110e151111f161000010五、十進制數(shù)轉(zhuǎn)化為非十進制數(shù)十進制轉(zhuǎn)換數(shù)轉(zhuǎn)換為非十進制數(shù)時,可將其分為整數(shù)部分和小數(shù)部分分別進行轉(zhuǎn)換,最后將結(jié)果合并為目的數(shù)。 整數(shù)部分的轉(zhuǎn)換整數(shù)部分的轉(zhuǎn)換是采用除基取余法。所謂除基取余法就是用欲轉(zhuǎn)換的數(shù)據(jù)的基數(shù)去除十進制數(shù)的整數(shù)部分,第一次除取得的余數(shù)為目的數(shù)的最低位,把得到的商再除以該基數(shù),所得余數(shù)為目的數(shù)的次低位,依此類推,繼續(xù)上面的過程,直到商為0時,所得余數(shù)為目的數(shù)的最高位。1、十

21、進制轉(zhuǎn)換成二進制例1、:將十進制的168轉(zhuǎn)換為二進制 (10101000)2分析:第一步,將168除以2,商84,余數(shù)為0 第二步,將商84除以2,商42余數(shù)為0 第三步,將商42除以2,商21余數(shù)為0第四步,將商21除以2,商10余數(shù)為1第五步,將商10除以2,商5余數(shù)為0 第六步,將商5除以2,商2余數(shù)為1第七步,將商2除以2,商1余數(shù)為0 第八步,將商1除以2,商0余數(shù)為1 第九步,讀數(shù),因為最后一位是經(jīng)過多次除以2才得到的,因此它是最高位,讀數(shù)字從最后的余數(shù)向前讀,即10101000。例2、6轉(zhuǎn)換成二進制,結(jié)果是110。把上面的一段改成用表格來表示,則為:被除數(shù)計算過程商余數(shù)66/23

22、033/21111/201(在計算機中,用 / 來表示) 如果是在考試時,我們要畫這樣表還是有點費時間,所更常見的換算過程是使用下圖的連除: (圖:1)請大家對照圖,表,及文字說明,并且自已拿筆計算一遍如何將6轉(zhuǎn)換為二進制數(shù)。 說了半天,我們的轉(zhuǎn)換結(jié)果對嗎?二進制數(shù)110是6嗎?你已經(jīng)學(xué)會如何將二進制數(shù)轉(zhuǎn)換成10進制數(shù)了,所以請現(xiàn)在就計算一下110換成10進制是否就是6。練習(xí):例將十進制53d轉(zhuǎn)換為二進制數(shù)110101b。小數(shù)部分的轉(zhuǎn)換小數(shù)部分的轉(zhuǎn)換是采用乘基取整法。所謂乘基取整法就是用該小數(shù)乘上目的數(shù)制的基數(shù),第一次乘得結(jié)果的整數(shù)部分為目的數(shù)的小數(shù)部分的最高位,其小數(shù)部分再乘上基數(shù),所得結(jié)果

23、的整數(shù)部分為目的數(shù)的次高位,依此類推,繼續(xù)上述的過程,直到小數(shù)部分為0或達到要求的精度為止。方法:乘2取整法,即將小數(shù)部分乘以2,然后取整數(shù)部分,剩下的小數(shù)部分繼續(xù)乘以2,然后取整數(shù)部分,剩下的小數(shù)部分又乘以2,一直取到小數(shù)部分 為零為止。如果永遠不能為零,就同十進制數(shù)的四舍五入一樣,按照要求保留多少位小數(shù)時,就根據(jù)后面一位是0還是1,取舍,如果是零,舍掉,如果是1,向入一位。換句話說就是0舍1入。讀數(shù)要從前面的整數(shù)讀到后面的整數(shù),下面舉例: 例1:將0.125換算為二進制 (0.001)2分析:第一步,將0.125乘以2,得0.25,則整數(shù)部分為0,小數(shù)部分為0.25; 第二步, 將小數(shù)部分

24、0.25乘以2,得0.5,則整數(shù)部分為0,小數(shù)部分為0.5; 第三步, 將小數(shù)部分0.5乘以2,得1.0,則整數(shù)部分為1,小數(shù)部分為0.0; 第四步,讀數(shù),從第一位讀起,讀到最后一位,即為0.001。 例2,將0.45轉(zhuǎn)換為二進制(保留到小數(shù)點第四位) 大家從上面步驟可以看出,當(dāng)?shù)谖宕巫龀朔〞r候,得到的結(jié)果是0.4,那么小數(shù)部分繼續(xù)乘以2,得0.8,0.8又乘以2的,到1.6這樣一直乘下去,最后不可能得到小數(shù)部分為零,因此,這個時候只好學(xué)習(xí)十進制的方法進行四舍五入了,但是二進制只有0和1兩個,于是就出現(xiàn)0舍1入。這個也是計算機在轉(zhuǎn)換中會產(chǎn)生誤差,但是由于保留位數(shù)很多,精度很高,所以可以忽略不計

25、。 那么,我們可以得出結(jié)果將0.45轉(zhuǎn)換為二進制約等于(0.0111)2從上面可以看出該數(shù)在轉(zhuǎn)換為二進制時,盡管已經(jīng)過了解5次相乘,但其小數(shù)位還存在,由于題目要求保留小數(shù)后4位,故結(jié)果為:0.736d0.1011b或0.736d0.1100b。上面介紹的方法是十進制轉(zhuǎn)換為為二進制的方法,需要大家注意的是: 1) 十進制轉(zhuǎn)換為二進制,需要分成整數(shù)和小數(shù)兩個部分分別轉(zhuǎn)換。2) 當(dāng)轉(zhuǎn)換整數(shù)時,用的除2取余法,而轉(zhuǎn)換小數(shù)時候,用的是乘2取整法 。3) 注意他們的讀數(shù)方向。因此,我們從上面的方法,我們可以得出十進制數(shù)168.125轉(zhuǎn)換為二進制為10101000.001,或者十進制數(shù)轉(zhuǎn)換為二進制數(shù)約等于1

26、0101000.0111。 二進制轉(zhuǎn)換為十進制不分整數(shù)和小數(shù)部分:方法:按權(quán)相加法,即將二進制每位上的數(shù)乘以權(quán),然后相加之和即是十進制數(shù)。例 將二進制數(shù)101.101轉(zhuǎn)換為十進制數(shù)。 得出結(jié)果:(101.101)2=(5.625)10 1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=4+1+0.5+0.125=(5.625)10大家在做二進制轉(zhuǎn)換成十進制需要注意的是:1) 要知道二進制每位的權(quán)值 。2) 要能求出每位的值。2、十進制轉(zhuǎn)換成八進制10進制數(shù)轉(zhuǎn)換成8進制的方法,和轉(zhuǎn)換為2進制的方法類似,惟一變化:除數(shù)由2變成8。來看一個例子,如何將十進制數(shù)120轉(zhuǎn)換成八進制數(shù)。用

27、表格表示:被除數(shù)計算過程商余數(shù)120120/81501515/81711/801120轉(zhuǎn)換為8進制,結(jié)果為:170。2、十進制轉(zhuǎn)換成十六進制10進制數(shù)轉(zhuǎn)換成16進制的方法,和轉(zhuǎn)換為2進制的方法類似,惟一變化:除數(shù)由2變成16。同樣是120,轉(zhuǎn)換成16進制則為:被除數(shù)計算過程商余數(shù)120120/167877/1607120轉(zhuǎn)換為16進制,結(jié)果為:78。作業(yè):請拿筆紙,采用(圖:1)的形式,演算上面兩個表的過程。六、非十制數(shù)轉(zhuǎn)換成十進制數(shù)由于任一數(shù)都可以按權(quán)展開,于是很容易將一個非十進制數(shù)轉(zhuǎn)換為相應(yīng)的十進制數(shù)。具體的步驟是:將一個非十進制按權(quán)展開成一個多項式,每項是該位的數(shù)碼與相應(yīng)的權(quán)之積,把多項

28、式按十進制數(shù)的規(guī)則進行計算機求和,所得結(jié)果即是該數(shù)的十進制。七、二進制與十六進制數(shù)、八進制數(shù)的相互轉(zhuǎn)換四位二進制數(shù)共有十六種組合,而十六種組合正好與十六進制的十六種組合一致,故每四位二進制數(shù)對應(yīng)于一位十六進制數(shù),因此二進制數(shù)與十六進制之間的轉(zhuǎn)換非常簡單。三位二進制數(shù)共有八種組合,而八種組合正好與八進制的八種組合一致,故每三位二進制數(shù)對應(yīng)于一位八進制數(shù),因此二進制數(shù)與八進制之間的轉(zhuǎn)換也非常簡單。下面通過四個例子來說其轉(zhuǎn)換:從上面例子可以總結(jié)出兩種進制轉(zhuǎn)換的方法:二進制轉(zhuǎn)換為十六進制時:只要將二進制數(shù)的整數(shù)部分自右向左每四位一組,最后不足四位的用零補足;小數(shù)部分則自左向右每四位一組,最后不足四位時

29、在右邊補零。再把每四位二進制數(shù)對應(yīng)的十六進制數(shù)寫出來即可。例1、:將二進制11101001.1011轉(zhuǎn)換為十六進制 得到結(jié)果:將二進制11101001.1011轉(zhuǎn)換為十六進制為e9.b 例2、:將101011.101轉(zhuǎn)換為十六進制得到結(jié)果:將二進制101011.101轉(zhuǎn)換為十六進制為2b.a十六進制數(shù)轉(zhuǎn)換為二進制數(shù)的正好與此相反,只要將每位的十六進制數(shù)對應(yīng)的四位二進制寫出來即行了。例1、將十六進制6e.2轉(zhuǎn)換為二進制數(shù)得到結(jié)果:將十六進制6e.2轉(zhuǎn)換為二進制為01101110.0010即110110.001二進制轉(zhuǎn)換為八進制時:只要將二進制數(shù)的整數(shù)部分自右向左每三位一組,最后不足三位的用零補足

30、;小數(shù)部分則自左向右每三位一組,最后不足三位時在右邊補零。再把每三位二進制數(shù)對應(yīng)的八進制數(shù)寫出來即可。例1、將二進制數(shù)101110.101轉(zhuǎn)換為八進制 得到結(jié)果:將101110.101轉(zhuǎn)換為八進制為56.5 例2、 將二進制數(shù)1101.1轉(zhuǎn)換為八進制 得到結(jié)果:將1101.1轉(zhuǎn)換為八進制為15.4八進制數(shù)轉(zhuǎn)換為二進制數(shù)的也正好與此相反,只要將每位的八進制數(shù)對應(yīng)的三位二進制寫出來即行了。例1、將八進制數(shù)67.54轉(zhuǎn)換為二進制得到結(jié)果:將八進制數(shù)67.54轉(zhuǎn)換為二進制110111.101100,即110111.1011注意:一般情況先將十進制轉(zhuǎn)化為二進制,有二進制轉(zhuǎn)化為其他進制,如十六進制和八進制

31、。八、常用編碼bcd編碼在數(shù)字系統(tǒng)中,各種數(shù)據(jù)要轉(zhuǎn)換為二進制代碼才能進行處理,而人們習(xí)慣于使用十進制數(shù),所以在數(shù)字系統(tǒng)的輸入輸出中仍采用十進制數(shù),這樣就產(chǎn)生了用四位二進制數(shù)表示一位十進制數(shù)的方法,這種用于表示十進制數(shù)的二進制代碼稱為二十進制代碼(binary coded decimal),簡稱為bcd碼。它具有二進制數(shù)的形式以滿足數(shù)字系統(tǒng)的要求,又具有十進制的特點(只有十種有效狀態(tài))。在某些情況下,計算機也可以對這種形式的數(shù)直接進行運算。常見的bcd碼表示有以下幾種。8421bcd編碼 這是一種使用最廣的bcd碼,是一種有權(quán)碼,其各位的權(quán)分別是(從最有效高位開始到最低有效位)8,4,2,1。例

32、寫出十進數(shù)563.97d對應(yīng)的8421bcd碼。563.97d=0101 0110 0011 . 1001 01118421bcd例寫出8421bcd碼1101001.010118421bcd對應(yīng)的十進制數(shù)。1101001.010118421bcd0110 1001 . 0101 10008421bcd=69.58d在使用8421bcd碼時一定要注意其有效的編碼僅十個,即:00001001。四位二進制數(shù)的其余六個編碼1010,1011,1100,1101,1110,1111不是有效編碼。2421bcd編碼 2421bcd碼也是一種有權(quán)碼,其從高位到低位的權(quán)分別為2,4,2,1,其也可以用四位二

33、進制數(shù)來表示一位十進制數(shù)。其編碼規(guī)則如下表。余3碼 余3碼也是一種bcd碼,但它是無權(quán)碼,但由于每一個碼對應(yīng)的8421bcd碼之間相差3,故稱為余3碼,其一般使用較少,故正須作一般性了解,具體的編碼如下表。常見bcd編碼表十進制數(shù)8421bcd碼2421bcd碼余3碼0000000000011100010001010020010001001013001100110110401000100011150101101110006011011001001701111101101081000111010119100111111100100001,00000001,00000100,0011格雷反射碼(循

34、環(huán)碼)格雷碼是一種無權(quán)碼,其特點是任意兩個相鄰的碼之間只有一個數(shù)不同。另外由于最大數(shù)與最小數(shù)之間也僅一個數(shù)不同,故通常又叫格雷反射碼或循環(huán)碼。十進制數(shù)二進制數(shù)格雷碼十進制數(shù)二進制數(shù)格雷碼000000000810001100100010001910011101200100011101010111130011001011101111104010001101211001010501010111131101101160110010114111010017011101001511111000九、原碼、反碼、補碼結(jié)束了各種進制的轉(zhuǎn)換,我們來談?wù)劻硪粋€話題:原碼、反碼、補碼。我們已經(jīng)知道計算機中,所有數(shù)據(jù)最

35、終都是使用二進制數(shù)表達。我們也已經(jīng)學(xué)會如何將一個10進制數(shù)如何轉(zhuǎn)換為二進制數(shù)。不過,我們?nèi)匀粵]有學(xué)習(xí)一個負數(shù)如何用二進制表達。比如,假設(shè)有一int類型的數(shù),值為5,那么,我們知道它在計算機中用四個字節(jié)(32位)表示為:( 00000000 00000000 00000000 00000101)。5轉(zhuǎn)換成二制是101,不過int類型的數(shù)占用4字節(jié)(32位),所以前面填了一堆0。那么-5在計算機中如何表示?在計算機中,負數(shù)以其正值的補碼形式表達。什么叫補碼呢?這得從原碼,反碼說起。原碼:一個整數(shù),按照絕對值大小轉(zhuǎn)換成的二進制數(shù),稱為原碼。比如 00000000 00000000 00000000

36、00000101 是 5的 原碼。反碼:將二進制數(shù)按位取反,所得的新二進制數(shù)稱為原二進制數(shù)的反碼。取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反碼。反碼是相互的,所以也可稱:11111111 11111111 11111111 11111010 和 00000000

37、 00000000 00000000 00000101 互為反碼。補碼:反碼加1稱為補碼。也就是說,要得到一個數(shù)的補碼,先得到反碼,然后將反碼加上1,所得數(shù)稱為補碼。比如:00000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。那么,補碼為:11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011。轉(zhuǎn)換

38、為十六進制:0xfffffffb。再舉一例,我們來看整數(shù)-1在計算機中如何表示。假設(shè)這也是一個int類型,那么:1、先取1的原碼: 00000000 00000000 00000000 000000012、得反碼:11111111 11111111 11111111 111111103、得補碼:11111111 11111111 11111111 11111111可見,1在計算機里用二進制表達就是全1。16進制為:0xffffff。一切都是紙上說的說1在計算機里表達為0xffffff,我能不能親眼看一看呢?當(dāng)然可以。利用簡單c程序,我們可以看到每個變量的16進制值。十、理解有符號數(shù)和無符號數(shù)生

39、活中我們所講的數(shù)都是正數(shù),例如,同樣是年紀和工資,前者不需要有負值,但后者可能需要至少所有的老板都這樣認為。那么,負數(shù)在計算機中如何表示呢?通過前面的學(xué)習(xí),我們知道計算機用“補碼”表示負數(shù)。1、你自已決定是否需要有正負。就像我們必須決定某個量使用整數(shù)還是實數(shù),使用多大的范圍數(shù)一樣,我們必須自已決定某個量是否需要正負。如果這個量不會有負值,那么我們可以定它為帶正負的類型。在計算機中,可以區(qū)分正負的類型,稱為有符類型,無正負的類型(只有正值),稱為無符類型。數(shù)值類型分為整型或?qū)嵭?,其中整型又分為無符類型或有符類型,而實型則只有符類型。字符類型也分為有符和無符類型。比如有兩個量,年齡和庫存,我們可以

40、定前者為無符的字符類型,后者定為有符的整數(shù)類型。2、使用二制數(shù)中的最高位表示正負。首先得知道最高位是哪一位?1個字節(jié)的類型,如字符類型,最高位是第7位,2個字節(jié)的數(shù),最高位是第15位,4個字節(jié)的數(shù),最高位是第31位。不同長度的數(shù)值類型,其最高位也就不同,但總是最左邊的那位(如下示意)。字符類型固定是1個字節(jié),所以最高位總是第7位。(粗體為最高位)單字節(jié)數(shù): 1111 1111(70)雙字節(jié)數(shù): 1111 1111 1111 1111(150)四字節(jié)數(shù): 1111 1111 1111 1111 1111 1111 1111 1111(310)當(dāng)我們指定一個數(shù)是無符號類型時,那么其最高位的1或0,

41、和其它位一樣,用來表示該數(shù)的大小。當(dāng)我們指定一個數(shù)是有符號類型時,此時,最高數(shù)稱為“符號位”,為1時,表示該數(shù)為負值,為0時表示為正值。3、無符號數(shù)和有符號數(shù)的范圍區(qū)別。無符號數(shù)中,所有的位都用于直接表示該值的大??;有符號數(shù)中最高位用于表示正負,所以,當(dāng)為正值時,該數(shù)的最大值就會變小。我們舉一個字節(jié)的數(shù)值對比:無符號數(shù): 1111 1111值:255=1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20有符號數(shù): 0111 1111值:127=1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1

42、* 21 + 1* 20同樣是一個字節(jié),無符號數(shù)的最大值是255,而有符號數(shù)的最大值是127。原因是有符號數(shù)中的最高位被挪去表示符號了。并且,我們知道,最高位的權(quán)值也是最高的(對于1字節(jié)數(shù)來說是2的7次方=128),所以僅僅少于一位,最大值一下子減半。不過,有符號數(shù)的長處是它可以表示負數(shù)。因此,雖然它的在最大值縮水了,卻在負值的方向出現(xiàn)了伸展。我們?nèi)砸粋€字節(jié)的數(shù)值對比:無符號數(shù): 0 255有符號數(shù): -128 0 127同樣是一個字節(jié),無符號的最小值是 0 ,而有符號數(shù)的最小值是-128。所以二者能表達的不同的數(shù)值的個數(shù)都一樣是256個。只不過前者表達的是0到255這256個數(shù),后者表達的是

43、-128到+127這256個數(shù)。一個有符號的數(shù)據(jù)類型的最小值是如何計算出來的呢?有符號的數(shù)據(jù)類型的最大值的計算方法完全和無符號一樣,只不過它少了一個最高位(見第3點)。但在負值范圍內(nèi),數(shù)值的計算方法不能直接使用1* 26 + 1* 25 的公式進行轉(zhuǎn)換。在計算機中,負數(shù)除為最高位為1以外,還采用補碼形式進行表達。所以在計算其值前,需要對補碼進行還原。這里,回憶一下補碼的形式:以我們原有的數(shù)學(xué)經(jīng)驗,在10進制中:1 表示正1,而加上負號:-1 表示和1相對的負值。那么,我們會容易錯誤地認為在2進制中(1個字節(jié)): 0000 0001 表示正1,則高位為1后:1000 0001應(yīng)該表示-1。然而,

44、事實上計算機中的規(guī)定有些相反,請看下表:二進制值(1字節(jié))十進制值10000001-12710000011-125.1111 1110-21111 1111-1首先我們看到,從-1到-128,其二進制的最高位都是1(表中標為紅色),正如我們前面的學(xué)。然后我們有些奇怪地發(fā)現(xiàn),1000 0000 并沒有拿來表示 -0;而1000 0001也不是拿來直觀地表示-1。事實上,-1 用1111 1111來表示。怎么理解這個問題呢?先得問一句是-1大還是-128大?當(dāng)然是 -1 大。-1是最大的負整數(shù)。以此對應(yīng),計算機中無論是字符類型,或者是整數(shù)類型

45、,也無論這個整數(shù)是幾個字節(jié)。它都用全1來表示 -1。比如一個字節(jié)的數(shù)值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和現(xiàn)實中的計算結(jié)果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。這樣一直減下去,當(dāng)減到只剩最高位用于表示符號的1以外,其它低位全為0時,就是最小的負值了,在一字節(jié)中,最小的負值是1000 0000,也就是-128。我們以-1為例,來看看不同字節(jié)數(shù)的整數(shù)中,如何表達-1這個數(shù):字節(jié)數(shù)二進制值十進制值單字節(jié)數(shù)1111 1111-1雙字節(jié)數(shù)1111 1111 1111 1111-1四字節(jié)數(shù)1111 1111 1

46、111 1111 1111 1111 1111 1111-1可能有同學(xué)這時會混了:為什么 1111 1111 有時表示255,有時又表示-1?所以我再強調(diào)一下本節(jié)前面所說的第2點:你自已決定一個數(shù)是有符號還是無符號的。寫程序時,指定一個量是有符號的,那么當(dāng)這個量的二進制各位上都是1時,它表示的數(shù)就是-1;相反,如果事選聲明這個量是無符號的,此時它表示的就是該量允許的最大值,對于一個字節(jié)的數(shù)來說,最大值就是255。什么是ascii碼?ascii碼英文全稱america standard code for information interchange,中文意思:美國信息交換標準碼。它已被國際標準

47、化組織(iso)定為國際標準,稱為iso 646標準。適用于所有拉丁文字字母,ascii碼有7位碼和8位碼兩種形式。ascii碼于1968年提出,用于在不同計算機硬件和軟件系統(tǒng)中實現(xiàn)數(shù)據(jù)傳輸標準化,在大多數(shù)的小型機和全部的個人計算機都使用此碼。ascii碼劃分為兩個集合:128個字符的標準ascii碼和附加的128個字符的擴充和ascii碼。因為1位二進制數(shù)可以表示(21=)2種狀態(tài):0、1;而2位二進制數(shù)可以表示(22)=4種狀態(tài):00、01、10、11;依次類推,7位二進制數(shù)可以表示(27=)128種狀態(tài),每種狀態(tài)都唯一地編為一個7位的二進制碼,對應(yīng)一個字符(或控制碼),這些碼可以排列成一

48、個十進制序號0127。所以,7位ascii碼是用七位二進制數(shù)進行編碼的,可以表示128個字符。 第032號及第127號(共34個)是控制字符或通訊專用字符,如控制符:lf(換行)、cr(回車)、ff(換頁)、del(刪除)、bel(振鈴)等; 通訊專用字符:soh(文頭)、eot(文尾)、ack(確認)等; 第33126號(共94個)是字符,其中第4857號為09十個阿拉伯?dāng)?shù)字;6590號為26個大寫英文字母,97122號為26個小寫英文字母,其余為一些標點符號、運算符號等。 注意:在計算機的存儲單元中,一個ascii碼值占一個字節(jié)(8個二進制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗

49、,是指在代碼傳送過程中用來檢驗是否出現(xiàn)錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規(guī)定:正確的代碼一個字節(jié)中1的個數(shù)必須是奇數(shù),若非奇數(shù),則在最高位b7添1;偶校驗規(guī)定:正確的代碼一個字節(jié)中1的個數(shù)必須是偶數(shù),若非偶數(shù),則在最高位b7添1。(ascii:american standard code for information interchange,美國信息交換標準碼。)值符號值符號值符號0空字符44,9132空格45-9233!46.933447/9435#48 570 995-36$58:9637%59;97 122a z38&6012541)63?12642*64127del (

50、delete鍵)43+65 90a z(其中,031都是一些不可見的字符,所以這里只列出值為0的字符,值為0的字符稱為空字符,輸出該字符時,計算機不會有任何反應(yīng)。我們以后會學(xué)習(xí)0字符的特殊作用。)十二、數(shù)據(jù)在內(nèi)存中的存?。ㄗ兞颗c內(nèi)存地址)前面講到“白馬、黑馬”時,我們說一匹白馬和一匹黑馬具有共同的數(shù)據(jù)類型“馬”,但二者是相對獨立的個體?,F(xiàn)在我們以共熟悉的“人”來繼續(xù)這個話題,最終引出變量與內(nèi)存地址的關(guān)系。張三和李四的數(shù)據(jù)類型都是“人類”。但張三和李四顯然是獨立的量:張三吃了兩塊蛋糕,李四不可能因此就覺和肚子飽了;而李四在下班的路上撿到一個錢包,雖然正好是張三的,兩人似乎通過錢包有了點關(guān)系,但誰

51、得誰失仍然不容混淆。這一切都很好理解。張三和李四之所以是不同的個體,根本原因在于兩人有著不同的肉身。如果是一對連體嬰兒,雖然也是兩個人,但當(dāng)左邊的嬰兒被蚊子咬一口時,右邊嬰兒是否也會覺得癢,就不好說了?,F(xiàn)在我們困難的是,如何理解兩個不同的變量,也是互相獨立的呢?答案就在“內(nèi)存地址”,“內(nèi)存地址”就是變量的肉身。不同的變量,擁有不同的內(nèi)存地址。譬如:char a;char b;上面有兩個字符類型的變量a和b,a擁有自已的內(nèi)存地址,b也擁有自已的內(nèi)存地址,二者絕不相同。而a、b只不過分別是那兩個內(nèi)存地址的“名字”,恰如“張三、李四”。讓我們看圖解:看,內(nèi)存就像是開賓館的。不過這有賓館有點怪。首先它

52、每一個“房間”的大小都是一個字節(jié)(因此,計算機能單獨處理的最小內(nèi)存單位為字節(jié))。它的門牌號也不叫房號,而是叫內(nèi)存地址。在左圖中,“房客”,變量a住在內(nèi)存地址為1000002的內(nèi)存中,而變量b則住在它的隔壁,地址為100003的內(nèi)存中。另外,如果你足夠細心,你還會發(fā)現(xiàn):內(nèi)存地址由下往上,從小到大排列。變量的內(nèi)存地址是在程序運行時,才由操作系統(tǒng)決定。這就好像我們住賓館。我們預(yù)定一個房間,但房間號由賓館根據(jù)情況決定,我們可以改變變量的值,但變量的地址我們無法改變。對照賓館一說,就是我們訂了房間,可以不去住,還可以決定讓誰去住在那個房間里。(當(dāng)然,現(xiàn)實生活中賓館可能不會允許你這么做)。在前面圖示的例子

53、中,a、b是字符(char)類型。各占用1個字節(jié)。如果是 int類型,那么應(yīng)該占4個字節(jié)。這4個字節(jié)必須是連續(xù)的。讓我們再來看一個例子: int a;int b;char c;在后面c語言,我們聲明了兩個int類型和一個char類型的變量。同時和上面一樣,我們事實上是假設(shè)了這三個變量被依次序分配在相鄰的內(nèi)存地址上(真實情況下,這和其它因素,如指定的字節(jié)對齊方式等有關(guān))。從右圖中可以看到整型變量a占用了1000001100004這4個字節(jié)。在我們已學(xué)習(xí)的數(shù)據(jù)類型中,long double占用10個字節(jié),是占用內(nèi)存空間最大的一種數(shù)據(jù)類型。以后我們學(xué)習(xí)數(shù)組,或者用戶自定數(shù)據(jù)類型,則可能要求占用相當(dāng)大的,并且同樣必須是連續(xù)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論