1.二進制碼
只使用“0”和“1”兩個基本符號,在數(shù)值數(shù)據(jù)中選用“逢二進一”的進位規(guī)則,這是二進制碼的基本特點。計算機內(nèi)部普遍使用二進制碼來表示各種數(shù)據(jù),這是因為:
① 很容易找到表示和區(qū)分二進制碼的“0”和“1”兩個符號的物理器件;
② “0”和“1”兩個符號可以很好地對應(yīng)邏輯型數(shù)據(jù)的“假”和“真”兩個值;
③ 用二進制碼表示的數(shù)值型數(shù)據(jù)的運算規(guī)則最簡單。
各種不同類型的數(shù)據(jù),包括數(shù)值、邏輯值、文本、圖像、聲音和視頻等多種信息,在計算機系統(tǒng)內(nèi)部都必須采用二進制代碼的“0”和“1”來表示。對于數(shù)值類型的數(shù)據(jù),在日常生活中通常使用帶正、負號的十進制數(shù)來表示,如123.456、-789等,這選用的二進制數(shù)或采用二進制編碼的就勢必遇到和計算機內(nèi)部十進制數(shù)(Binary Coded Decimal Number,簡稱BCD碼)之間的數(shù)制轉(zhuǎn)換問題。
2.數(shù)制與進位計數(shù)法
在采用進位計數(shù)的數(shù)字系統(tǒng)中,如果只用r個基本符號 (例如0,1,2,…r-1) 、通過排列起來的符號串表示數(shù)值,則稱其為基r數(shù)制(Radix-r Number System), r稱為數(shù)制的基數(shù)(Radix)。假定用m+k個自左向右排列的符號Di(i是位序號,-k≤i≤m-1;Di表示符號串中第i位上的記數(shù)符號,屬于0到r-1中的一個)表示數(shù)值N,則有:
N = Dm-1 Dm-2 … D1 D0 D-1 D-2 …D-k (2.1)
式中的Di(-k≤i≤m-1)為該數(shù)制采用的基本符號,可取值0、1、2、…、r-1,小數(shù)點位置隱含在 D0與D-1位之間,則Dm-1 … D0 為N的整數(shù)部分,D-1 … D-k 為N的小數(shù)部分。
如果為第i位上的符號1賦以某個固定的值Wi ,則稱Wi 為第i位的權(quán) (Weight) ,在選用“逢r進位”的規(guī)則時,位權(quán)Wi的值為ri(一個底為基數(shù)、冪是位序號的指數(shù)值),則稱這種數(shù)制為r進位數(shù)制 (Positional Radix-r Number System),簡稱r進制。第i位的實際值可寫成Di×ri,N的實際值為各數(shù)據(jù)位實際值的累加和,可表示為:
m-1
例如,表示十進制數(shù)要使用10個基本符號:0,1,2,3,4,5,6,7,8,9,采用逢10進1規(guī)則,例如103.4 = 1×102 + 0×101 + 3×100 + 4×10-1。
在計算機中通常還會用到二、八、十六3種進位數(shù)制。
在二進制中,計數(shù)符號:0,1,基數(shù)是2,逢二進一。
在八進制中,計數(shù)符號:0,1,…,7,基數(shù)是8,逢八進一。
在十六進制中,計數(shù)符號:0,1,…,9,A,B,…,F(xiàn),基數(shù)是16,逢十六進一。分別用A-F分別表示十進制數(shù)10,11,12,13,14,15。
1.十→二進制數(shù)的轉(zhuǎn)換
十→二進制數(shù)的轉(zhuǎn)換要分為整數(shù)與小數(shù)兩種情況分別轉(zhuǎn)換。
(1)整數(shù)的轉(zhuǎn)換:采用除2取余,高位在下,直到商為0時為止的原則。
(2)小數(shù)的轉(zhuǎn)換:采用乘2取整,高位在上的原則,位數(shù)達到要求或小數(shù)部分為0結(jié)束。
例如,把十進制小數(shù)0.375轉(zhuǎn)換為二進制數(shù),如下所示:
0.375×2=0.75 整數(shù)部分為0高位
0.75×2=1.5 整數(shù)部分為1
0.5×2=1.0 整數(shù)部分為1低位
所以,0.375=(0.011)2
(十進制轉(zhuǎn)化二進制)
2.二-十進制數(shù)的轉(zhuǎn)換
二-十進制數(shù)的轉(zhuǎn)換:通常采用公式(2.2)對二進制數(shù)各位的實際值累加求和完成。
例如:(10110)2= 1×24+0×23+1×22+1×21+0×20 =22
?。?101.1)2=1×23+1×22+0×21+1×20+1×2-1=13.5
(二進制轉(zhuǎn)化十進制)
3.八→二進制數(shù)的轉(zhuǎn)換
因為23=8,故1個八進制位對應(yīng)3個二進制位,可以把一個八進制數(shù)的整數(shù)部分和小數(shù)部分的每一位分別轉(zhuǎn)換成3位二進制數(shù)。
例如:?。?03.4)8=(001010011.100)2
?。?41)8=(111100001)2
4.二→八進制數(shù)的轉(zhuǎn)換
因為23=8,故3個二進制位對應(yīng)1個八進制位,可以從小數(shù)點位置分別向左和向右把每3位二進制數(shù)劃分為一組,并轉(zhuǎn)換成1位八進制數(shù)。注意:小數(shù)部分分組時若低位不足3位時要用0補足,否則會出錯。
例如: (10110110.1)2=(266.4)8,而不是 (266.1) 8
(二進制轉(zhuǎn)化八進制)
5.十六→二進制數(shù)的轉(zhuǎn)換
因為24=16,故1個十六進制位對應(yīng)4個二進制位,可以把一個十六進制數(shù)的整數(shù)部分和小數(shù)部分的每一位分別轉(zhuǎn)換成4位二進制數(shù)。
例如: (123)16=(0001,0010,0011)2
(D2C8)16=(1101,0010,1100,1000)2
6.二→十六進制數(shù)的轉(zhuǎn)換
因為24=16,故4個二進制位對應(yīng)1個十六進制位,可以從小數(shù)點位置分別向左和向右把每4位二進制數(shù)劃分為一組,并轉(zhuǎn)換成1位十六進制數(shù)。注意:小數(shù)部分分組是若低位不足4位要用0補足,否則會出錯。
例如: (10110110.11)2=(1011, 0110)16=(B6.C)16,而不是 (266.3) 16
(100110111)2=(1, 0011, 0111)8=(137)16
(二進制轉(zhuǎn)化十六進制)
]]>