- 大學(xué)計(jì)算機(jī)基礎(chǔ)教程
- 賴慶 劉松
- 1894字
- 2019-10-14 11:38:02
1.2.3 數(shù)據(jù)的表示與數(shù)制
1.二進(jìn)制數(shù)據(jù)的表示
二進(jìn)制具有物理實(shí)現(xiàn)性價(jià)比高、運(yùn)算法則簡(jiǎn)單,容易存儲(chǔ)等優(yōu)點(diǎn)。計(jì)算機(jī)如何在物理上表示二進(jìn)制呢?主要的方法還是采用電信號(hào)表示,高電壓表示1,低電壓表示0,如圖1-24所示。

圖1-24 二進(jìn)制方波表示
2.數(shù)制
數(shù)制不僅是計(jì)算機(jī)出現(xiàn)時(shí)才有的,實(shí)際上中國除了使用十進(jìn)制外,還有十六進(jìn)制,1949年以前使用的稱量衡器,就是十六兩等于一斤,所以才有“半斤八兩”這個(gè)成語。在時(shí)間上采用的是60進(jìn)制,60秒等于1分鐘。這些進(jìn)制的產(chǎn)生有著其歷史和客觀的原因,有些已經(jīng)形成習(xí)慣。
由于計(jì)算機(jī)內(nèi)部采用的是二進(jìn)制編碼,但計(jì)算機(jī)與外部的信息交流依然采用大家所熟悉和習(xí)慣的形式,通常采用十進(jìn)制數(shù)據(jù)來表示數(shù)值。這樣計(jì)算機(jī)和人之間就必須要通過“翻譯”。二進(jìn)制和十進(jìn)制之間的“翻譯”是需要損耗系統(tǒng)資源的,尤其是時(shí)間的代價(jià)。下面介紹幾個(gè)概念:
數(shù)制:按進(jìn)位的方法進(jìn)行計(jì)數(shù),稱為進(jìn)位計(jì)數(shù)制,簡(jiǎn)稱數(shù)制。如果某個(gè)數(shù)制采用R個(gè)基本符號(hào),則稱其為基R數(shù)制,R稱為數(shù)制的基數(shù)。不同的數(shù)制在基數(shù)規(guī)則、進(jìn)位規(guī)則、位權(quán)規(guī)則和運(yùn)算規(guī)則等方面也不相同。
基數(shù):是指某種數(shù)制中可能用到的計(jì)數(shù)符號(hào)的個(gè)數(shù)。如十進(jìn)制數(shù)有0~9十個(gè)基數(shù)。
位權(quán):不同位數(shù)上的計(jì)數(shù)符號(hào)所表示的數(shù)值大小是不同的,它的實(shí)際數(shù)值是計(jì)數(shù)符號(hào)乘以某一固定的常數(shù),這個(gè)常數(shù)稱為位權(quán),簡(jiǎn)稱權(quán)。如25=2×101+5×100,101和00
分別為對(duì)應(yīng)位的位權(quán)。
進(jìn)位:如十進(jìn)制數(shù)是逢十進(jìn)一,二進(jìn)制數(shù)是逢二進(jìn)一,等等。
任何一種進(jìn)位制都可以用下面的規(guī)則來描述:基數(shù)規(guī)則、進(jìn)位規(guī)則、位權(quán)規(guī)則、運(yùn)算規(guī)則。常用的數(shù)制有十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制。它們的特點(diǎn)如表1-2所示。
表1-2 四種數(shù)制的特點(diǎn)比較

例如,(256.15)D=2×102+5×101+6×100+1×10-1+5×10-2
(1101)B=1×23+1×22+0×21+1×20
3.數(shù)制之間的轉(zhuǎn)換
在計(jì)算機(jī)內(nèi)部的運(yùn)算采用二進(jìn)制數(shù),但人們的習(xí)慣是十進(jìn)制數(shù),為了方便,在輸入和輸出采用十進(jìn)制數(shù),由計(jì)算機(jī)完成二進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換。這就需要了解不同數(shù)制間的轉(zhuǎn)換問題。表1-3所示為常用計(jì)數(shù)制數(shù)之間的對(duì)應(yīng)關(guān)系。
表1-3 常用計(jì)數(shù)制數(shù)之間的對(duì)應(yīng)關(guān)系

(1)R進(jìn)制轉(zhuǎn)換為十進(jìn)制
方法:按權(quán)展開求和
基數(shù)為R的數(shù)值,只需將各位數(shù)字與相應(yīng)的權(quán)值相乘,再將其積相加后,各數(shù)就是對(duì)應(yīng)的十進(jìn)制值。
【例1】二進(jìn)制轉(zhuǎn)換為十進(jìn)制。
(110101.0101)B=1×25+1×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2+0×2-3+1×2-4
=(53.3125)D
【例2】八進(jìn)制轉(zhuǎn)換為十進(jìn)制:
(3506.2)O=3×83+5×82+0×81+6×80+2×8-1=(1862.25)D
【例3】十六進(jìn)制轉(zhuǎn)換為十進(jìn)制。
(71.E)H=7×161+1×160+E×16-1=(113.875)D
各種數(shù)制轉(zhuǎn)換成十進(jìn)制的方法:按權(quán)展開。
(2)十進(jìn)制轉(zhuǎn)換為R進(jìn)制
將十進(jìn)制轉(zhuǎn)換為基數(shù)為R的數(shù)制時(shí),將其整數(shù)部分和小數(shù)部分分別加以轉(zhuǎn)換,然后再合并起來即可。
十進(jìn)制整數(shù)部分轉(zhuǎn)換為基數(shù)為R的數(shù)制的轉(zhuǎn)換方法為:“除R取余”;十進(jìn)制小數(shù)部分轉(zhuǎn)換為基數(shù)為R的數(shù)制轉(zhuǎn)換方法為:“乘R取整”。
當(dāng)對(duì)十進(jìn)制小數(shù)部分連續(xù)地乘以R時(shí),若小數(shù)部分最后乘至為零,則轉(zhuǎn)換結(jié)束;小數(shù)部分也可能永遠(yuǎn)不能乘至為零,則達(dá)到所要求的精度即可。
【例4】將(215.3125)D轉(zhuǎn)換為二進(jìn)制數(shù)。

得到:(215)D=(11010111)D。
得到:(0.3125)D=(0.0101)B
將整數(shù)部分和小數(shù)部分合并在一起,得到:(215.3125)D=(11010111.0101)B。
【例5】將十進(jìn)制數(shù)(125.275)D轉(zhuǎn)換成十六進(jìn)制數(shù)。
方法:整數(shù)部分除16取余法,小數(shù)部分乘16取整法。

所以,(125.275)D=(7D.46)H。
(3)二進(jìn)制、八進(jìn)制、十六進(jìn)制的相互轉(zhuǎn)換
二進(jìn)制、八進(jìn)制、十六進(jìn)制之間的相互轉(zhuǎn)換在實(shí)際應(yīng)用中是需要加以掌握的。例如,計(jì)算機(jī)中的許多設(shè)備參數(shù)設(shè)置值往往是用十六進(jìn)制表示的,用戶便需要對(duì)其加以轉(zhuǎn)換才容易理解。
由于二、八、十六進(jìn)制三種數(shù)制的權(quán)值有以下的內(nèi)在聯(lián)系:23=8,24=16,也就是說3位二進(jìn)制相當(dāng)于1位的八進(jìn)制數(shù),4位二進(jìn)制數(shù)相當(dāng)于1位16進(jìn)制數(shù),因而它們之間的轉(zhuǎn)換便較容易實(shí)現(xiàn)。首先我們需要掌握表1-4中所列的各類進(jìn)制數(shù)中基數(shù)值的相互對(duì)應(yīng)關(guān)系。
二進(jìn)制、八進(jìn)制的相互轉(zhuǎn)換:
①八進(jìn)制轉(zhuǎn)換為二進(jìn)制:每位八進(jìn)制數(shù)對(duì)應(yīng)于三位二進(jìn)制數(shù)。
②二進(jìn)制轉(zhuǎn)換為八進(jìn)制:對(duì)二進(jìn)制整數(shù)部分從低位向高位分組,每三位一組;小數(shù)部分從高位向低位分組,每三位一組,不足補(bǔ)零。然后寫出每組對(duì)應(yīng)的八進(jìn)制基數(shù)即可。
【例6】八進(jìn)制數(shù)化為二進(jìn)制數(shù):(7123.63)O=(?)B

【例7】二進(jìn)制數(shù)化為八進(jìn)制數(shù):(1101101110)B=(?)O
二進(jìn)制轉(zhuǎn)換為八進(jìn)制的過程是相似的,也就是上例的逆向過程。
八進(jìn)制、十六進(jìn)制的相互轉(zhuǎn)換:
①十六進(jìn)制轉(zhuǎn)換為二進(jìn)制:每位十六進(jìn)制數(shù)對(duì)應(yīng)于四位二進(jìn)制數(shù);

②二進(jìn)制轉(zhuǎn)換為十六進(jìn)制:對(duì)二進(jìn)制整數(shù)部分從低位向高位分組,每四位一組;小數(shù)部分從高位向低位分組,每四位一組,不足補(bǔ)零。然后寫出每組對(duì)應(yīng)的十六進(jìn)制基數(shù)即可。
【例8】十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù):(2C1D)H=(?)B

【例9】二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù):(1101101110)B=(?)H

- 嵌入式軟件系統(tǒng)測(cè)試:基于形式化方法的自動(dòng)化測(cè)試解決方案
- Node.js 10實(shí)戰(zhàn)
- Android項(xiàng)目開發(fā)入門教程
- 編程卓越之道(卷3):軟件工程化
- C語言程序設(shè)計(jì)基礎(chǔ)與實(shí)驗(yàn)指導(dǎo)
- Python Deep Learning
- Java技術(shù)手冊(cè)(原書第7版)
- Bulma必知必會(huì)
- Go并發(fā)編程實(shí)戰(zhàn)
- C# 7.1 and .NET Core 2.0:Modern Cross-Platform Development(Third Edition)
- Puppet 5 Beginner's Guide(Third Edition)
- Mastering Object:Oriented Python(Second Edition)
- C#網(wǎng)絡(luò)編程高級(jí)篇之網(wǎng)頁游戲輔助程序設(shè)計(jì)
- Microsoft XNA 4.0 Game Development Cookbook
- VC++ 2008專題應(yīng)用程序開發(fā)實(shí)例精講