3數(shù)的機(jī)器碼表示符號數(shù)的機(jī)器碼表示:
(1)機(jī)器數(shù)和真值數(shù)在計算機(jī)中的表示形式統(tǒng)稱為機(jī)器數(shù)。機(jī)器數(shù)有兩個基本特點(diǎn):其一,數(shù)的符號數(shù)值化。實(shí)用的數(shù)據(jù)有正數(shù)和負(fù)數(shù),因為計算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號“+”或負(fù)號“-”,在機(jī)器里就用一位二進(jìn)制的0或1來區(qū)別。通常這個符號放在二進(jìn)制數(shù)的最高位,稱符號位,以0代表符號“+”,以1代表符號“-”,這樣正負(fù)符號就被數(shù)值化了。因為有符號占據(jù)一位,數(shù)的形式值就不等于真正的數(shù)值,帶符號位的機(jī)器數(shù)對應(yīng)的數(shù)值稱為機(jī)器數(shù)的真值。機(jī)器數(shù)的另一個特點(diǎn)是二進(jìn)制的位數(shù)受機(jī)器設(shè)備的限制。機(jī)器內(nèi)部設(shè)備一次能表示的二進(jìn)制位數(shù)叫機(jī)器的字長,一臺機(jī)器的字長是固定的。字長8位叫一個字節(jié)(Byte),現(xiàn)在機(jī)器字長一般都是字節(jié)的整數(shù)倍,如字長8位、16位、32位、64位。符號位數(shù)值化之后,為能方便的對機(jī)器數(shù)進(jìn)行算術(shù)運(yùn)算,提高運(yùn)算速度,計算機(jī)設(shè)計了多種符號位與數(shù)值一起編碼的方法,最常用的機(jī)器數(shù)表示方法有三種:原碼、反碼和補(bǔ)碼。
(2)原碼表示法和反碼表示法一個機(jī)器數(shù)X由符號位和有數(shù)數(shù)值兩部分組成。設(shè)符號位為X0,X真值的絕對值|X|=X1X2…Xn,X的機(jī)器數(shù)原碼表示為:[X]原=X0X1X2…Xn當(dāng)X≥0時,X0=0當(dāng)X<0時,X0=1原碼表示很直觀,但原碼加減運(yùn)算時符號位不能視同數(shù)值一樣參加運(yùn)算,運(yùn)算規(guī)則復(fù)雜,運(yùn)算時間長,計算機(jī)大量的數(shù)據(jù)處理工作是加減運(yùn)算,原碼表示就很不方便了。一個負(fù)數(shù)的原碼符號位不動,其余各位取相反碼就是機(jī)器數(shù)的另一種表示形式——反碼表示法。正數(shù)的反碼與原碼相同。設(shè)[X]原=X0X1X2…Xn當(dāng)X0=0時,[X]反=X0X1X2…Xn當(dāng)X0=1時,[X]反=X012…n
(3)補(bǔ)碼表示法(complement)設(shè)計補(bǔ)碼表示法的目的是:
、偈狗栁荒芎陀行(shù)值部分一起參加數(shù)值運(yùn)算從而簡化運(yùn)算規(guī)則,節(jié)省運(yùn)算時間。
、谑箿p法運(yùn)算轉(zhuǎn)化成加法運(yùn)算,從而進(jìn)一步簡化計算機(jī)中運(yùn)算器的線路設(shè)計。計算機(jī)是一種有限字長的數(shù)字系統(tǒng),因此都是有模運(yùn)算,超過模的運(yùn)算結(jié)果都將溢出。n位二進(jìn)制整數(shù)的模是2n。一個數(shù)的補(bǔ)碼記作[X]補(bǔ),設(shè)模是M,X是真值,補(bǔ)碼定義如下:[X]補(bǔ)=[X]原X≥
M+X X<0從這個定義出發(fā)就能求得一個數(shù)的補(bǔ)碼。對于二進(jìn)制數(shù)還有一種更加簡單的方法由原碼求得補(bǔ)碼。
、僬龜(shù)的補(bǔ)碼表示與原碼一樣,[X]補(bǔ)=[X]原②負(fù)數(shù)的補(bǔ)碼是將原碼符號位保持“1”之后其余各位取相反的碼,末位加1便得到補(bǔ)碼,即取其原碼的反碼再加1∶[X]補(bǔ)=[X]反+1。真值+0和-0的補(bǔ)碼表示是一致的,但在原碼和反碼表示中具有不同的形式。8位補(bǔ)碼機(jī)器數(shù)可以表示-128,但不存在+128的補(bǔ)碼與之對應(yīng),由此可知8位二進(jìn)制補(bǔ)碼能表示數(shù)的范圍是-128~+127。應(yīng)該注意:不存在-128的8位原碼和反碼形式。根據(jù)互補(bǔ)的概念,一個補(bǔ)碼機(jī)器數(shù)再求一次補(bǔ)就得到機(jī)器數(shù)的原碼了。定點(diǎn)數(shù)與浮點(diǎn)數(shù):
(1)定點(diǎn)數(shù)(fixed-point number)計算機(jī)處理的數(shù)據(jù)不僅有符號,而且大量的數(shù)帶有小數(shù),小數(shù)點(diǎn)不占有二進(jìn)制位,而是隱含有機(jī)器數(shù)里某固定位置上。通常采用兩種簡單的約定:一種是約定所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在機(jī)器數(shù)的最低位之后,叫定點(diǎn)純整數(shù)機(jī)器數(shù),簡稱定點(diǎn)整數(shù)。另一種約定所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含有符號位之后,有效數(shù)值部分最高位之前,叫定點(diǎn)純小數(shù)機(jī)器數(shù),簡稱定點(diǎn)小數(shù)。計算機(jī)采用定點(diǎn)數(shù)表示時,對于既有整數(shù)又有小數(shù)的原始數(shù)據(jù),需要設(shè)定一個比例因子,數(shù)據(jù)按比例因子縮小成定點(diǎn)小數(shù)或擴(kuò)大成定點(diǎn)整數(shù)再參加運(yùn)算,結(jié)果輸出時再按比例折算成實(shí)際值。n位原碼定點(diǎn)整數(shù)的表示范圍是-(2n-1-1)≤X≤2n-1-1,n位原碼定點(diǎn)小數(shù)的表示范圍是-(1-2-(n-1)≤X≤1-2-(n-1)。當(dāng)機(jī)器數(shù)小于定點(diǎn)數(shù)的最小值時,被當(dāng)作0處理,超出定點(diǎn)數(shù)的最大值時,機(jī)器無法表達(dá),稱作“溢出”,此時機(jī)器將停止運(yùn)算,屏幕顯示溢出警告。定點(diǎn)數(shù)表示方法簡單直觀,不過定點(diǎn)數(shù)表示數(shù)的范圍小,不易選擇合適的比例因子,運(yùn)算過程容易產(chǎn)生溢出。
(2)浮點(diǎn)數(shù)(floating-point number)計算機(jī)采用浮點(diǎn)數(shù)來表示數(shù)值,它與科學(xué)計算法相似,把任意一個二進(jìn)制數(shù)通過移動小數(shù)點(diǎn)位置表示成階碼和尾數(shù)兩部分:N=2E×S其中:E——N的階碼(exponent),是有符號的整數(shù);
S——N的尾數(shù)(mantissa),是數(shù)值的有效數(shù)字部分,一般規(guī)定取二進(jìn)制定點(diǎn)純小數(shù)正式。浮點(diǎn)數(shù)運(yùn)算必須化成規(guī)格化形式。所謂規(guī)格化,對于原碼尾數(shù)應(yīng)使最高數(shù)字位S1=1,如果不是1,且尾數(shù)不是全為0時就要移動尾數(shù)直到S1=1,階碼相應(yīng)變化,保證N值不變。如果尾數(shù)是補(bǔ)碼,當(dāng)N是正數(shù)時,S1必須是1,而N是負(fù)數(shù)時,S1必須是0,才稱為規(guī)格化的形式。
4.數(shù)字編碼十進(jìn)制數(shù)在機(jī)內(nèi)轉(zhuǎn)換成二進(jìn)制數(shù)時,有時也以一種中間數(shù)字編碼形式存在,它把每一位十進(jìn)制數(shù)用四位二進(jìn)制編碼表達(dá),每一組只表達(dá)0~9的數(shù)值運(yùn)算時,有專門的線路在每四位二進(jìn)制間按“十”進(jìn)位處理,故稱為二進(jìn)制編碼的十進(jìn)制數(shù)——BCD碼(Binary Coded Decimal(或稱二—十進(jìn)制數(shù)。其編碼種類很多,如格雷碼、余3碼等,最常用的叫8421 BCD碼,4個二進(jìn)制位自左向右每位的權(quán)分別是8、4、2、1。0~9的8421碼與通常的二進(jìn)制一樣進(jìn)位,十分簡單,當(dāng)計數(shù)超過9時,需要采取辦法自動向十進(jìn)制高位進(jìn)一,即要進(jìn)行“十進(jìn)制調(diào)整”才能得到正確結(jié)果。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |