計(jì)算機(jī)數(shù)據(jù)-原碼·反碼·補(bǔ)碼_第1頁(yè)
計(jì)算機(jī)數(shù)據(jù)-原碼·反碼·補(bǔ)碼_第2頁(yè)
計(jì)算機(jī)數(shù)據(jù)-原碼·反碼·補(bǔ)碼_第3頁(yè)
計(jì)算機(jī)數(shù)據(jù)-原碼·反碼·補(bǔ)碼_第4頁(yè)
計(jì)算機(jī)數(shù)據(jù)-原碼·反碼·補(bǔ)碼_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)數(shù)據(jù)表示1.二進(jìn)制計(jì)數(shù)制引入二進(jìn)制數(shù)字系統(tǒng)的計(jì)算機(jī)結(jié)構(gòu)和性能具有如下的優(yōu)點(diǎn):(1)技術(shù)實(shí)現(xiàn)容易。(2)二進(jìn)制運(yùn)算規(guī)則簡(jiǎn)單。(3)計(jì)算機(jī)中二進(jìn)制數(shù)的0、1數(shù)碼與邏輯代數(shù)變量值0與1吻合,所以二進(jìn)制同時(shí)可以使計(jì)算機(jī)方便地進(jìn)行邏輯運(yùn)算。(4)二進(jìn)制數(shù)和十進(jìn)制數(shù)之間的關(guān)系亦不復(fù)雜。2.任意進(jìn)制計(jì)數(shù)制和十進(jìn)制計(jì)數(shù)制的相互轉(zhuǎn)換十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù):十進(jìn)制數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),因整數(shù)部分與小數(shù)部分轉(zhuǎn)換算法不同,需要分別進(jìn)行。(1)整數(shù)轉(zhuǎn)換方法除基取余法十進(jìn)制整數(shù)除以2取余數(shù)作最低位系數(shù)k 0 ,再取商的繼續(xù)除以2取余數(shù)作高一位的系數(shù),如此繼續(xù)直到商為0時(shí)停止,最后一次的余數(shù)就是整數(shù)部分最高有效位的二

2、進(jìn)制系數(shù),依次所得到的余數(shù)序列就是轉(zhuǎn)換成的二進(jìn)制數(shù)。因?yàn)槌龜?shù)2是二進(jìn)制的基數(shù),所以這種算法稱作“除基取余”法。(2)小數(shù)轉(zhuǎn)換方法乘基取整法把十進(jìn)制小數(shù)乘以2,取其積的整數(shù)部分作為對(duì)應(yīng)二進(jìn)制小數(shù)的最高位系數(shù)k -1 ,再取積的純小數(shù)部分乘以2,新得積的整數(shù)部分又作下一位的系數(shù)k -2 ,再取其積的純小數(shù)部分繼續(xù)乘2,直到乘積小數(shù)部分為0時(shí)停止,這時(shí)乘積的整數(shù)部分是二進(jìn)制數(shù)最低位系數(shù),每次乘積得到的整數(shù)序列就是所求的二進(jìn)制小數(shù),這種方法每次乘以基數(shù)取其整數(shù)作系數(shù)。所以叫乘基取整法。需要指出的是并不是所有十進(jìn)制小數(shù)都能轉(zhuǎn)換成有限位的二進(jìn)制小數(shù)并出現(xiàn)乘積的小數(shù)部分0的情況,有時(shí)整個(gè)換算過(guò)程會(huì)無(wú)限進(jìn)行下

3、去,此時(shí)可以根據(jù)要求并考慮計(jì)算機(jī)字長(zhǎng),取一定長(zhǎng)度的位數(shù)后四舍五入,這時(shí)得到的二進(jìn)制數(shù)是原十進(jìn)制數(shù)的近似值。一個(gè)既有整數(shù)部分又有小數(shù)的數(shù)送入計(jì)算機(jī)后,由機(jī)器把整數(shù)部分按“除基取余”法,小數(shù)部分按“乘基取整”法分別進(jìn)行轉(zhuǎn)換,然后合并。任意進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù):任意一種進(jìn)位計(jì)數(shù)制的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法都是一樣的。把任意進(jìn)制數(shù)按權(quán)展開(kāi)成多項(xiàng)式和的形式,把各位的權(quán)與該位上的數(shù)碼相乘,乘積逐項(xiàng)相加,其和便是相應(yīng)的十進(jìn)制數(shù)。十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù):十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù)與十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法完全相同,即整數(shù)部分用除基取余的算法,小數(shù)部分用乘基取整的方法,然后將整數(shù)與小數(shù)拼接成一個(gè)數(shù)作為轉(zhuǎn)換的最

4、后結(jié)果。3.數(shù)的機(jī)器碼表示符號(hào)數(shù)的機(jī)器碼表示:(1)機(jī)器數(shù)和真值 數(shù)在計(jì)算機(jī)中的表示形式統(tǒng)稱為機(jī)器數(shù)。機(jī)器數(shù)有兩個(gè)基本特點(diǎn),其一,數(shù)的符號(hào)數(shù)值化。實(shí)用的數(shù)據(jù)有正數(shù)和負(fù)數(shù),因?yàn)橛?jì)算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號(hào)“+”或負(fù)號(hào)“-”,在機(jī)器里就用一位二進(jìn)制的0或1來(lái)區(qū)別。通常這個(gè)符號(hào)放在二進(jìn)制數(shù)的最高位,稱符號(hào)位,以0代表符號(hào)“+”,以1代表符號(hào)“-”,這樣正負(fù)符號(hào)就被數(shù)值化了。因?yàn)橛蟹?hào)占據(jù)一位,數(shù)的形式值就不等于真正的數(shù)值,帶符號(hào)位的機(jī)器數(shù)對(duì)應(yīng)的數(shù)值稱為機(jī)器數(shù)的真值。機(jī)器數(shù)的另一個(gè)特點(diǎn)是二進(jìn)制的位數(shù)受機(jī)器設(shè)備的限制。機(jī)器內(nèi)部設(shè)備一次能表示的二進(jìn)制位數(shù)叫機(jī)器的字長(zhǎng),一臺(tái)機(jī)器的字長(zhǎng)是固定的。字

5、長(zhǎng)8位叫一個(gè)字節(jié)(Byte),現(xiàn)在機(jī)器字長(zhǎng)一般都是字節(jié)的整數(shù)倍,如字長(zhǎng)8位、16位、32位、64位。符號(hào)位數(shù)值化之后,為能方便的對(duì)機(jī)器數(shù)進(jìn)行算術(shù)運(yùn)算、提高運(yùn)算速度,計(jì)算機(jī)設(shè)計(jì)了多種符號(hào)位與數(shù)值一起編碼的方法,最常用的機(jī)器數(shù)表示方法有三種:原碼、反碼和補(bǔ)碼。(2)原碼表示法和反碼表示法一個(gè)機(jī)器數(shù)X由符號(hào)位和有效數(shù)值兩部分組成。設(shè)符號(hào)位為X 0 ,X真值的絕對(duì)值|X|=X 1 X 2 X n ,X的機(jī)器數(shù)原碼表示為:X原 =X0X1X2Xn 當(dāng) X0時(shí),X0 =0當(dāng) X<0時(shí),X0 =1原碼表示很直觀,但原碼加減運(yùn)算時(shí)符號(hào)位不能視同數(shù)值一樣參加運(yùn)算,運(yùn)算規(guī)則復(fù)雜,運(yùn)算時(shí)間長(zhǎng),而計(jì)算機(jī)大量的數(shù)

6、據(jù)處理工作是加減運(yùn)算,原碼表示就很不方便了。一個(gè)負(fù)數(shù)的原碼符號(hào)位不動(dòng),其余各位取相反碼就是機(jī)器數(shù)的另一種表示形式反碼表示法。正數(shù)的反碼與原碼相同。設(shè)X原 =X0X1X2Xn當(dāng) X0 =0時(shí),X反 =X0X1X2Xn 當(dāng) X0 =1時(shí),X反 =X0X1X2Xn (3)補(bǔ)碼表示法(complement)設(shè)計(jì)補(bǔ)碼表示法的目的是:使符號(hào)位能和有效數(shù)值部分一起參加數(shù)值運(yùn)算從而簡(jiǎn)化運(yùn)算規(guī)則,節(jié)省運(yùn)算時(shí)間。使減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算,從而進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)。計(jì)算機(jī)是一種有限字長(zhǎng)的數(shù)字系統(tǒng),因此都是有模運(yùn)算,超過(guò)模的運(yùn)算結(jié)果都將溢出。n位二進(jìn)制整數(shù)的模是2 n 。對(duì)于二進(jìn)制數(shù)還有一種更加簡(jiǎn)單的方

7、法由原碼求得補(bǔ)碼。正數(shù)的補(bǔ)碼表示與原碼一樣,X 補(bǔ) =X 原負(fù)數(shù)的補(bǔ)碼是將原碼符號(hào)位保持“1”之后其余各位取相反的碼,末位加1便得到補(bǔ)碼,即取其原碼的反碼再加1X 補(bǔ) =X 反 +1。真值+0和-0的補(bǔ)碼表示是一致的,但在原碼和反碼表示中具有不同的形式。8位補(bǔ)碼機(jī)器數(shù)可以表示-128,但不存在+128的補(bǔ)碼,由此可知8位二進(jìn)制補(bǔ)碼能表示數(shù)的范圍是-128+127。應(yīng)該注意,不存在-128的8位原碼和反碼形式。根據(jù)互補(bǔ)的概念,一個(gè)補(bǔ)碼機(jī)器數(shù)再求一次補(bǔ)就得到機(jī)器數(shù)的原碼了。定點(diǎn)數(shù)與浮點(diǎn)數(shù):(1)定點(diǎn)數(shù)(fixed-point number)計(jì)算機(jī)處理的數(shù)據(jù)不僅有符號(hào),而且大量的數(shù)帶有小數(shù),小數(shù)點(diǎn)不

8、占有二進(jìn)制位而是隱含有機(jī)器數(shù)里某固定位置上。通常采用兩種簡(jiǎn)單的約定:一種是約定所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在機(jī)器數(shù)的最低位之后,叫定點(diǎn)純整數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)整數(shù)。另一種約定是所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在符號(hào)位之后、有效數(shù)值部分最高位之前,叫定點(diǎn)純小數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)小數(shù)。計(jì)算機(jī)采用定點(diǎn)數(shù)表示時(shí),對(duì)于既有整數(shù)又有小數(shù)的原始數(shù)據(jù),需要設(shè)定一個(gè)比例因子,數(shù)據(jù)按比例因子縮小成定點(diǎn)小數(shù)或擴(kuò)大成定點(diǎn)整數(shù)再參加運(yùn)算,結(jié)果輸出時(shí)再按比例折算成實(shí)際值。n位原碼定點(diǎn)整數(shù)的表示范圍是-(2 n-1 -1)X2 n-1 -1,n位原碼定點(diǎn)小數(shù)的表示范圍是-(1-2 -(n-1) )X1-2 -(n-1) 。當(dāng)機(jī)器數(shù)小于

9、定點(diǎn)數(shù)的最小值時(shí),被當(dāng)作0處理,超出定點(diǎn)數(shù)的最大值時(shí),機(jī)器無(wú)法表達(dá),稱作“溢出”,此時(shí)機(jī)器將停止運(yùn)算,屏幕顯示溢出警告。 定點(diǎn)數(shù)表示方法簡(jiǎn)單直觀,不過(guò)定點(diǎn)數(shù)表示數(shù)的范圍小,不易選擇合適的比例因子,運(yùn)算過(guò)程容易產(chǎn)生溢出。 摘自計(jì)算機(jī)數(shù)據(jù)表示1.二進(jìn)制計(jì)數(shù)制引入二進(jìn)制數(shù)字系統(tǒng)的計(jì)算機(jī)結(jié)構(gòu)和性能具有如下的優(yōu)點(diǎn):(1)技術(shù)實(shí)現(xiàn)容易。(2)二進(jìn)制運(yùn)算規(guī)則簡(jiǎn)單。(3)計(jì)算機(jī)中二進(jìn)制數(shù)的0、1數(shù)碼與邏輯代數(shù)變量值0與1吻合,所以二進(jìn)制同時(shí)可以使計(jì)算機(jī)方便地進(jìn)行邏輯運(yùn)算。(4)二進(jìn)制數(shù)和十進(jìn)制數(shù)之間的關(guān)系亦不復(fù)雜。2.任意進(jìn)制計(jì)數(shù)制和十進(jìn)制計(jì)數(shù)制的相互轉(zhuǎn)換十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù):十進(jìn)制數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),因

10、整數(shù)部分與小數(shù)部分轉(zhuǎn)換算法不同,需要分別進(jìn)行。(1)整數(shù)轉(zhuǎn)換方法除基取余法十進(jìn)制整數(shù)除以2取余數(shù)作最低位系數(shù)k 0 ,再取商的繼續(xù)除以2取余數(shù)作高一位的系數(shù),如此繼續(xù)直到商為0時(shí)停止,最后一次的余數(shù)就是整數(shù)部分最高有效位的二進(jìn)制系數(shù),依次所得到的余數(shù)序列就是轉(zhuǎn)換成的二進(jìn)制數(shù)。因?yàn)槌龜?shù)2是二進(jìn)制的基數(shù),所以這種算法稱作“除基取余”法。(2)小數(shù)轉(zhuǎn)換方法乘基取整法把十進(jìn)制小數(shù)乘以2,取其積的整數(shù)部分作為對(duì)應(yīng)二進(jìn)制小數(shù)的最高位系數(shù)k -1 ,再取積的純小數(shù)部分乘以2,新得積的整數(shù)部分又作下一位的系數(shù)k -2 ,再取其積的純小數(shù)部分繼續(xù)乘2,直到乘積小數(shù)部分為0時(shí)停止,這時(shí)乘積的整數(shù)部分是二進(jìn)制數(shù)最低

11、位系數(shù),每次乘積得到的整數(shù)序列就是所求的二進(jìn)制小數(shù),這種方法每次乘以基數(shù)取其整數(shù)作系數(shù)。所以叫乘基取整法。需要指出的是并不是所有十進(jìn)制小數(shù)都能轉(zhuǎn)換成有限位的二進(jìn)制小數(shù)并出現(xiàn)乘積的小數(shù)部分0的情況,有時(shí)整個(gè)換算過(guò)程會(huì)無(wú)限進(jìn)行下去,此時(shí)可以根據(jù)要求并考慮計(jì)算機(jī)字長(zhǎng),取一定長(zhǎng)度的位數(shù)后四舍五入,這時(shí)得到的二進(jìn)制數(shù)是原十進(jìn)制數(shù)的近似值。一個(gè)既有整數(shù)部分又有小數(shù)的數(shù)送入計(jì)算機(jī)后,由機(jī)器把整數(shù)部分按“除基取余”法,小數(shù)部分按“乘基取整”法分別進(jìn)行轉(zhuǎn)換,然后合并。任意進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù):任意一種進(jìn)位計(jì)數(shù)制的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法都是一樣的。把任意進(jìn)制數(shù)按權(quán)展開(kāi)成多項(xiàng)式和的形式,把各位的權(quán)與該位上的數(shù)碼相乘

12、,乘積逐項(xiàng)相加,其和便是相應(yīng)的十進(jìn)制數(shù)。十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù):十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù)與十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法完全相同,即整數(shù)部分用除基取余的算法,小數(shù)部分用乘基取整的方法,然后將整數(shù)與小數(shù)拼接成一個(gè)數(shù)作為轉(zhuǎn)換的最后結(jié)果。3.數(shù)的機(jī)器碼表示符號(hào)數(shù)的機(jī)器碼表示:(1)機(jī)器數(shù)和真值 數(shù)在計(jì)算機(jī)中的表示形式統(tǒng)稱為機(jī)器數(shù)。機(jī)器數(shù)有兩個(gè)基本特點(diǎn),其一,數(shù)的符號(hào)數(shù)值化。實(shí)用的數(shù)據(jù)有正數(shù)和負(fù)數(shù),因?yàn)橛?jì)算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號(hào)“+”或負(fù)號(hào)“-”,在機(jī)器里就用一位二進(jìn)制的0或1來(lái)區(qū)別。通常這個(gè)符號(hào)放在二進(jìn)制數(shù)的最高位,稱符號(hào)位,以0代表符號(hào)“+”,以1代表符號(hào)“-”,這樣正負(fù)符號(hào)就被數(shù)值

13、化了。因?yàn)橛蟹?hào)占據(jù)一位,數(shù)的形式值就不等于真正的數(shù)值,帶符號(hào)位的機(jī)器數(shù)對(duì)應(yīng)的數(shù)值稱為機(jī)器數(shù)的真值。機(jī)器數(shù)的另一個(gè)特點(diǎn)是二進(jìn)制的位數(shù)受機(jī)器設(shè)備的限制。機(jī)器內(nèi)部設(shè)備一次能表示的二進(jìn)制位數(shù)叫機(jī)器的字長(zhǎng),一臺(tái)機(jī)器的字長(zhǎng)是固定的。字長(zhǎng)8位叫一個(gè)字節(jié)(Byte),現(xiàn)在機(jī)器字長(zhǎng)一般都是字節(jié)的整數(shù)倍,如字長(zhǎng)8位、16位、32位、64位。符號(hào)位數(shù)值化之后,為能方便的對(duì)機(jī)器數(shù)進(jìn)行算術(shù)運(yùn)算、提高運(yùn)算速度,計(jì)算機(jī)設(shè)計(jì)了多種符號(hào)位與數(shù)值一起編碼的方法,最常用的機(jī)器數(shù)表示方法有三種:原碼、反碼和補(bǔ)碼。(2)原碼表示法和反碼表示法一個(gè)機(jī)器數(shù)X由符號(hào)位和有效數(shù)值兩部分組成。設(shè)符號(hào)位為X 0 ,X真值的絕對(duì)值|X|=X 1

14、X 2 X n ,X的機(jī)器數(shù)原碼表示為:X原 =X0X1X2Xn 當(dāng) X0時(shí),X0 =0當(dāng) X<0時(shí),X0 =1原碼表示很直觀,但原碼加減運(yùn)算時(shí)符號(hào)位不能視同數(shù)值一樣參加運(yùn)算,運(yùn)算規(guī)則復(fù)雜,運(yùn)算時(shí)間長(zhǎng),而計(jì)算機(jī)大量的數(shù)據(jù)處理工作是加減運(yùn)算,原碼表示就很不方便了。一個(gè)負(fù)數(shù)的原碼符號(hào)位不動(dòng),其余各位取相反碼就是機(jī)器數(shù)的另一種表示形式反碼表示法。正數(shù)的反碼與原碼相同。設(shè)X原 =X0X1X2Xn當(dāng) X0 =0時(shí),X反 =X0X1X2Xn 當(dāng) X0 =1時(shí),X反 =X0X1X2Xn (3)補(bǔ)碼表示法(complement)設(shè)計(jì)補(bǔ)碼表示法的目的是:使符號(hào)位能和有效數(shù)值部分一起參加數(shù)值運(yùn)算從而簡(jiǎn)化運(yùn)算

15、規(guī)則,節(jié)省運(yùn)算時(shí)間。使減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算,從而進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)。計(jì)算機(jī)是一種有限字長(zhǎng)的數(shù)字系統(tǒng),因此都是有模運(yùn)算,超過(guò)模的運(yùn)算結(jié)果都將溢出。n位二進(jìn)制整數(shù)的模是2 n 。對(duì)于二進(jìn)制數(shù)還有一種更加簡(jiǎn)單的方法由原碼求得補(bǔ)碼。正數(shù)的補(bǔ)碼表示與原碼一樣,X 補(bǔ) =X 原負(fù)數(shù)的補(bǔ)碼是將原碼符號(hào)位保持“1”之后其余各位取相反的碼,末位加1便得到補(bǔ)碼,即取其原碼的反碼再加1X 補(bǔ) =X 反 +1。真值+0和-0的補(bǔ)碼表示是一致的,但在原碼和反碼表示中具有不同的形式。8位補(bǔ)碼機(jī)器數(shù)可以表示-128,但不存在+128的補(bǔ)碼,由此可知8位二進(jìn)制補(bǔ)碼能表示數(shù)的范圍是-128+127。應(yīng)該注意,

16、不存在-128的8位原碼和反碼形式。根據(jù)互補(bǔ)的概念,一個(gè)補(bǔ)碼機(jī)器數(shù)再求一次補(bǔ)就得到機(jī)器數(shù)的原碼了。定點(diǎn)數(shù)與浮點(diǎn)數(shù):(1)定點(diǎn)數(shù)(fixed-point number)計(jì)算機(jī)處理的數(shù)據(jù)不僅有符號(hào),而且大量的數(shù)帶有小數(shù),小數(shù)點(diǎn)不占有二進(jìn)制位而是隱含有機(jī)器數(shù)里某固定位置上。通常采用兩種簡(jiǎn)單的約定:一種是約定所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在機(jī)器數(shù)的最低位之后,叫定點(diǎn)純整數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)整數(shù)。另一種約定是所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在符號(hào)位之后、有效數(shù)值部分最高位之前,叫定點(diǎn)純小數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)小數(shù)。計(jì)算機(jī)采用定點(diǎn)數(shù)表示時(shí),對(duì)于既有整數(shù)又有小數(shù)的原始數(shù)據(jù),需要設(shè)定一個(gè)比例因子,數(shù)據(jù)按比例因子縮小成定點(diǎn)小數(shù)

17、或擴(kuò)大成定點(diǎn)整數(shù)再參加運(yùn)算,結(jié)果輸出時(shí)再按比例折算成實(shí)際值。n位原碼定點(diǎn)整數(shù)的表示范圍是-(2 n-1 -1)X2 n-1 -1,n位原碼定點(diǎn)小數(shù)的表示范圍是-(1-2 -(n-1) )X1-2 -(n-1) 。當(dāng)機(jī)器數(shù)小于定點(diǎn)數(shù)的最小值時(shí),被當(dāng)作0處理,超出定點(diǎn)數(shù)的最大值時(shí),機(jī)器無(wú)法表達(dá),稱作“溢出”,此時(shí)機(jī)器將停止運(yùn)算,屏幕顯示溢出警告。 定點(diǎn)數(shù)表示方法簡(jiǎn)單直觀,不過(guò)定點(diǎn)數(shù)表示數(shù)的范圍小,不易選擇合適的比例因子,運(yùn)算過(guò)程容易產(chǎn)生溢出。 計(jì)算機(jī)數(shù)據(jù)表示1.二進(jìn)制計(jì)數(shù)制引入二進(jìn)制數(shù)字系統(tǒng)的計(jì)算機(jī)結(jié)構(gòu)和性能具有如下的優(yōu)點(diǎn):(1)技術(shù)實(shí)現(xiàn)容易。(2)二進(jìn)制運(yùn)算規(guī)則簡(jiǎn)單。(3)計(jì)算機(jī)中二進(jìn)制數(shù)的0、

18、1數(shù)碼與邏輯代數(shù)變量值0與1吻合,所以二進(jìn)制同時(shí)可以使計(jì)算機(jī)方便地進(jìn)行邏輯運(yùn)算。(4)二進(jìn)制數(shù)和十進(jìn)制數(shù)之間的關(guān)系亦不復(fù)雜。2.任意進(jìn)制計(jì)數(shù)制和十進(jìn)制計(jì)數(shù)制的相互轉(zhuǎn)換十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù):十進(jìn)制數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),因整數(shù)部分與小數(shù)部分轉(zhuǎn)換算法不同,需要分別進(jìn)行。(1)整數(shù)轉(zhuǎn)換方法除基取余法十進(jìn)制整數(shù)除以2取余數(shù)作最低位系數(shù)k 0 ,再取商的繼續(xù)除以2取余數(shù)作高一位的系數(shù),如此繼續(xù)直到商為0時(shí)停止,最后一次的余數(shù)就是整數(shù)部分最高有效位的二進(jìn)制系數(shù),依次所得到的余數(shù)序列就是轉(zhuǎn)換成的二進(jìn)制數(shù)。因?yàn)槌龜?shù)2是二進(jìn)制的基數(shù),所以這種算法稱作“除基取余”法。(2)小數(shù)轉(zhuǎn)換方法乘基取整法把十進(jìn)制小數(shù)乘以2

19、,取其積的整數(shù)部分作為對(duì)應(yīng)二進(jìn)制小數(shù)的最高位系數(shù)k -1 ,再取積的純小數(shù)部分乘以2,新得積的整數(shù)部分又作下一位的系數(shù)k -2 ,再取其積的純小數(shù)部分繼續(xù)乘2,直到乘積小數(shù)部分為0時(shí)停止,這時(shí)乘積的整數(shù)部分是二進(jìn)制數(shù)最低位系數(shù),每次乘積得到的整數(shù)序列就是所求的二進(jìn)制小數(shù),這種方法每次乘以基數(shù)取其整數(shù)作系數(shù)。所以叫乘基取整法。需要指出的是并不是所有十進(jìn)制小數(shù)都能轉(zhuǎn)換成有限位的二進(jìn)制小數(shù)并出現(xiàn)乘積的小數(shù)部分0的情況,有時(shí)整個(gè)換算過(guò)程會(huì)無(wú)限進(jìn)行下去,此時(shí)可以根據(jù)要求并考慮計(jì)算機(jī)字長(zhǎng),取一定長(zhǎng)度的位數(shù)后四舍五入,這時(shí)得到的二進(jìn)制數(shù)是原十進(jìn)制數(shù)的近似值。一個(gè)既有整數(shù)部分又有小數(shù)的數(shù)送入計(jì)算機(jī)后,由機(jī)器把

20、整數(shù)部分按“除基取余”法,小數(shù)部分按“乘基取整”法分別進(jìn)行轉(zhuǎn)換,然后合并。任意進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù):任意一種進(jìn)位計(jì)數(shù)制的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法都是一樣的。把任意進(jìn)制數(shù)按權(quán)展開(kāi)成多項(xiàng)式和的形式,把各位的權(quán)與該位上的數(shù)碼相乘,乘積逐項(xiàng)相加,其和便是相應(yīng)的十進(jìn)制數(shù)。十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù):十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù)與十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法完全相同,即整數(shù)部分用除基取余的算法,小數(shù)部分用乘基取整的方法,然后將整數(shù)與小數(shù)拼接成一個(gè)數(shù)作為轉(zhuǎn)換的最后結(jié)果。3.數(shù)的機(jī)器碼表示符號(hào)數(shù)的機(jī)器碼表示:(1)機(jī)器數(shù)和真值 數(shù)在計(jì)算機(jī)中的表示形式統(tǒng)稱為機(jī)器數(shù)。機(jī)器數(shù)有兩個(gè)基本特點(diǎn),其一,數(shù)的符號(hào)數(shù)值化。實(shí)用的數(shù)據(jù)

21、有正數(shù)和負(fù)數(shù),因?yàn)橛?jì)算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號(hào)“+”或負(fù)號(hào)“-”,在機(jī)器里就用一位二進(jìn)制的0或1來(lái)區(qū)別。通常這個(gè)符號(hào)放在二進(jìn)制數(shù)的最高位,稱符號(hào)位,以0代表符號(hào)“+”,以1代表符號(hào)“-”,這樣正負(fù)符號(hào)就被數(shù)值化了。因?yàn)橛蟹?hào)占據(jù)一位,數(shù)的形式值就不等于真正的數(shù)值,帶符號(hào)位的機(jī)器數(shù)對(duì)應(yīng)的數(shù)值稱為機(jī)器數(shù)的真值。機(jī)器數(shù)的另一個(gè)特點(diǎn)是二進(jìn)制的位數(shù)受機(jī)器設(shè)備的限制。機(jī)器內(nèi)部設(shè)備一次能表示的二進(jìn)制位數(shù)叫機(jī)器的字長(zhǎng),一臺(tái)機(jī)器的字長(zhǎng)是固定的。字長(zhǎng)8位叫一個(gè)字節(jié)(Byte),現(xiàn)在機(jī)器字長(zhǎng)一般都是字節(jié)的整數(shù)倍,如字長(zhǎng)8位、16位、32位、64位。符號(hào)位數(shù)值化之后,為能方便的對(duì)機(jī)器數(shù)進(jìn)行算術(shù)運(yùn)算、提高運(yùn)

22、算速度,計(jì)算機(jī)設(shè)計(jì)了多種符號(hào)位與數(shù)值一起編碼的方法,最常用的機(jī)器數(shù)表示方法有三種:原碼、反碼和補(bǔ)碼。(2)原碼表示法和反碼表示法一個(gè)機(jī)器數(shù)X由符號(hào)位和有效數(shù)值兩部分組成。設(shè)符號(hào)位為X 0 ,X真值的絕對(duì)值|X|=X 1 X 2 X n ,X的機(jī)器數(shù)原碼表示為:X原 =X0X1X2Xn 當(dāng) X0時(shí),X0 =0當(dāng) X<0時(shí),X0 =1原碼表示很直觀,但原碼加減運(yùn)算時(shí)符號(hào)位不能視同數(shù)值一樣參加運(yùn)算,運(yùn)算規(guī)則復(fù)雜,運(yùn)算時(shí)間長(zhǎng),而計(jì)算機(jī)大量的數(shù)據(jù)處理工作是加減運(yùn)算,原碼表示就很不方便了。一個(gè)負(fù)數(shù)的原碼符號(hào)位不動(dòng),其余各位取相反碼就是機(jī)器數(shù)的另一種表示形式反碼表示法。正數(shù)的反碼與原碼相同。設(shè)X原 =

23、X0X1X2Xn當(dāng) X0 =0時(shí),X反 =X0X1X2Xn 當(dāng) X0 =1時(shí),X反 =X0X1X2Xn (3)補(bǔ)碼表示法(complement)設(shè)計(jì)補(bǔ)碼表示法的目的是:使符號(hào)位能和有效數(shù)值部分一起參加數(shù)值運(yùn)算從而簡(jiǎn)化運(yùn)算規(guī)則,節(jié)省運(yùn)算時(shí)間。使減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算,從而進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)。計(jì)算機(jī)是一種有限字長(zhǎng)的數(shù)字系統(tǒng),因此都是有模運(yùn)算,超過(guò)模的運(yùn)算結(jié)果都將溢出。n位二進(jìn)制整數(shù)的模是2 n 。對(duì)于二進(jìn)制數(shù)還有一種更加簡(jiǎn)單的方法由原碼求得補(bǔ)碼。正數(shù)的補(bǔ)碼表示與原碼一樣,X 補(bǔ) =X 原負(fù)數(shù)的補(bǔ)碼是將原碼符號(hào)位保持“1”之后其余各位取相反的碼,末位加1便得到補(bǔ)碼,即取其原碼的反碼再

24、加1X 補(bǔ) =X 反 +1。真值+0和-0的補(bǔ)碼表示是一致的,但在原碼和反碼表示中具有不同的形式。8位補(bǔ)碼機(jī)器數(shù)可以表示-128,但不存在+128的補(bǔ)碼,由此可知8位二進(jìn)制補(bǔ)碼能表示數(shù)的范圍是-128+127。應(yīng)該注意,不存在-128的8位原碼和反碼形式。根據(jù)互補(bǔ)的概念,一個(gè)補(bǔ)碼機(jī)器數(shù)再求一次補(bǔ)就得到機(jī)器數(shù)的原碼了。定點(diǎn)數(shù)與浮點(diǎn)數(shù):(1)定點(diǎn)數(shù)(fixed-point number)計(jì)算機(jī)處理的數(shù)據(jù)不僅有符號(hào),而且大量的數(shù)帶有小數(shù),小數(shù)點(diǎn)不占有二進(jìn)制位而是隱含有機(jī)器數(shù)里某固定位置上。通常采用兩種簡(jiǎn)單的約定:一種是約定所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在機(jī)器數(shù)的最低位之后,叫定點(diǎn)純整數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)整

25、數(shù)。另一種約定是所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在符號(hào)位之后、有效數(shù)值部分最高位之前,叫定點(diǎn)純小數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)小數(shù)。計(jì)算機(jī)采用定點(diǎn)數(shù)表示時(shí),對(duì)于既有整數(shù)又有小數(shù)的原始數(shù)據(jù),需要設(shè)定一個(gè)比例因子,數(shù)據(jù)按比例因子縮小成定點(diǎn)小數(shù)或擴(kuò)大成定點(diǎn)整數(shù)再參加運(yùn)算,結(jié)果輸出時(shí)再按比例折算成實(shí)際值。n位原碼定點(diǎn)整數(shù)的表示范圍是-(2 n-1 -1)X2 n-1 -1,n位原碼定點(diǎn)小數(shù)的表示范圍是-(1-2 -(n-1) )X1-2 -(n-1) 。當(dāng)機(jī)器數(shù)小于定點(diǎn)數(shù)的最小值時(shí),被當(dāng)作0處理,超出定點(diǎn)數(shù)的最大值時(shí),機(jī)器無(wú)法表達(dá),稱作“溢出”,此時(shí)機(jī)器將停止運(yùn)算,屏幕顯示溢出警告。 定點(diǎn)數(shù)表示方法簡(jiǎn)單直觀,不過(guò)定點(diǎn)數(shù)

26、表示數(shù)的范圍小,不易選擇合適的比例因子,運(yùn)算過(guò)程容易產(chǎn)生溢出。  摘自計(jì)算機(jī)數(shù)據(jù)表示1.二進(jìn)制計(jì)數(shù)制引入二進(jìn)制數(shù)字系統(tǒng)的計(jì)算機(jī)結(jié)構(gòu)和性能具有如下的優(yōu)點(diǎn):(1)技術(shù)實(shí)現(xiàn)容易。(2)二進(jìn)制運(yùn)算規(guī)則簡(jiǎn)單。(3)計(jì)算機(jī)中二進(jìn)制數(shù)的0、1數(shù)碼與邏輯代數(shù)變量值0與1吻合,所以二進(jìn)制同時(shí)可以使計(jì)算機(jī)方便地進(jìn)行邏輯運(yùn)算。(4)二進(jìn)制數(shù)和十進(jìn)制數(shù)之間的關(guān)系亦不復(fù)雜。2.任意進(jìn)制計(jì)數(shù)制和十進(jìn)制計(jì)數(shù)制的相互轉(zhuǎn)換十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù):十進(jìn)制數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),因整數(shù)部分與小數(shù)部分轉(zhuǎn)換算法不同,需要分別進(jìn)行。(1)整數(shù)轉(zhuǎn)換方法除基取余法十進(jìn)制整數(shù)除以2取余數(shù)作最低位系數(shù)k 0 ,再取商的繼續(xù)除以

27、2取余數(shù)作高一位的系數(shù),如此繼續(xù)直到商為0時(shí)停止,最后一次的余數(shù)就是整數(shù)部分最高有效位的二進(jìn)制系數(shù),依次所得到的余數(shù)序列就是轉(zhuǎn)換成的二進(jìn)制數(shù)。因?yàn)槌龜?shù)2是二進(jìn)制的基數(shù),所以這種算法稱作“除基取余”法。(2)小數(shù)轉(zhuǎn)換方法乘基取整法把十進(jìn)制小數(shù)乘以2,取其積的整數(shù)部分作為對(duì)應(yīng)二進(jìn)制小數(shù)的最高位系數(shù)k -1 ,再取積的純小數(shù)部分乘以2,新得積的整數(shù)部分又作下一位的系數(shù)k -2 ,再取其積的純小數(shù)部分繼續(xù)乘2,直到乘積小數(shù)部分為0時(shí)停止,這時(shí)乘積的整數(shù)部分是二進(jìn)制數(shù)最低位系數(shù),每次乘積得到的整數(shù)序列就是所求的二進(jìn)制小數(shù),這種方法每次乘以基數(shù)取其整數(shù)作系數(shù)。所以叫乘基取整法。需要指出的是并不是所有十進(jìn)制

28、小數(shù)都能轉(zhuǎn)換成有限位的二進(jìn)制小數(shù)并出現(xiàn)乘積的小數(shù)部分0的情況,有時(shí)整個(gè)換算過(guò)程會(huì)無(wú)限進(jìn)行下去,此時(shí)可以根據(jù)要求并考慮計(jì)算機(jī)字長(zhǎng),取一定長(zhǎng)度的位數(shù)后四舍五入,這時(shí)得到的二進(jìn)制數(shù)是原十進(jìn)制數(shù)的近似值。一個(gè)既有整數(shù)部分又有小數(shù)的數(shù)送入計(jì)算機(jī)后,由機(jī)器把整數(shù)部分按“除基取余”法,小數(shù)部分按“乘基取整”法分別進(jìn)行轉(zhuǎn)換,然后合并。任意進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù):任意一種進(jìn)位計(jì)數(shù)制的數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法都是一樣的。把任意進(jìn)制數(shù)按權(quán)展開(kāi)成多項(xiàng)式和的形式,把各位的權(quán)與該位上的數(shù)碼相乘,乘積逐項(xiàng)相加,其和便是相應(yīng)的十進(jìn)制數(shù)。十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù):十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù)與十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法完全相同,即整

29、數(shù)部分用除基取余的算法,小數(shù)部分用乘基取整的方法,然后將整數(shù)與小數(shù)拼接成一個(gè)數(shù)作為轉(zhuǎn)換的最后結(jié)果。3.數(shù)的機(jī)器碼表示符號(hào)數(shù)的機(jī)器碼表示:(1)機(jī)器數(shù)和真值 數(shù)在計(jì)算機(jī)中的表示形式統(tǒng)稱為機(jī)器數(shù)。機(jī)器數(shù)有兩個(gè)基本特點(diǎn),其一,數(shù)的符號(hào)數(shù)值化。實(shí)用的數(shù)據(jù)有正數(shù)和負(fù)數(shù),因?yàn)橛?jì)算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號(hào)“+”或負(fù)號(hào)“-”,在機(jī)器里就用一位二進(jìn)制的0或1來(lái)區(qū)別。通常這個(gè)符號(hào)放在二進(jìn)制數(shù)的最高位,稱符號(hào)位,以0代表符號(hào)“+”,以1代表符號(hào)“-”,這樣正負(fù)符號(hào)就被數(shù)值化了。因?yàn)橛蟹?hào)占據(jù)一位,數(shù)的形式值就不等于真正的數(shù)值,帶符號(hào)位的機(jī)器數(shù)對(duì)應(yīng)的數(shù)值稱為機(jī)器數(shù)的真值。機(jī)器數(shù)的另一個(gè)特點(diǎn)是二進(jìn)制的位數(shù)受

30、機(jī)器設(shè)備的限制。機(jī)器內(nèi)部設(shè)備一次能表示的二進(jìn)制位數(shù)叫機(jī)器的字長(zhǎng),一臺(tái)機(jī)器的字長(zhǎng)是固定的。字長(zhǎng)8位叫一個(gè)字節(jié)(Byte),現(xiàn)在機(jī)器字長(zhǎng)一般都是字節(jié)的整數(shù)倍,如字長(zhǎng)8位、16位、32位、64位。符號(hào)位數(shù)值化之后,為能方便的對(duì)機(jī)器數(shù)進(jìn)行算術(shù)運(yùn)算、提高運(yùn)算速度,計(jì)算機(jī)設(shè)計(jì)了多種符號(hào)位與數(shù)值一起編碼的方法,最常用的機(jī)器數(shù)表示方法有三種:原碼、反碼和補(bǔ)碼。(2)原碼表示法和反碼表示法一個(gè)機(jī)器數(shù)X由符號(hào)位和有效數(shù)值兩部分組成。設(shè)符號(hào)位為X 0 ,X真值的絕對(duì)值|X|=X 1 X 2 X n ,X的機(jī)器數(shù)原碼表示為:X原 =X0X1X2Xn 當(dāng) X0時(shí),X0 =0當(dāng) X<0時(shí),X0 =1原碼表示很直觀,

31、但原碼加減運(yùn)算時(shí)符號(hào)位不能視同數(shù)值一樣參加運(yùn)算,運(yùn)算規(guī)則復(fù)雜,運(yùn)算時(shí)間長(zhǎng),而計(jì)算機(jī)大量的數(shù)據(jù)處理工作是加減運(yùn)算,原碼表示就很不方便了。一個(gè)負(fù)數(shù)的原碼符號(hào)位不動(dòng),其余各位取相反碼就是機(jī)器數(shù)的另一種表示形式反碼表示法。正數(shù)的反碼與原碼相同。設(shè)X原 =X0X1X2Xn當(dāng) X0 =0時(shí),X反 =X0X1X2Xn 當(dāng) X0 =1時(shí),X反 =X0X1X2Xn (3)補(bǔ)碼表示法(complement)設(shè)計(jì)補(bǔ)碼表示法的目的是:使符號(hào)位能和有效數(shù)值部分一起參加數(shù)值運(yùn)算從而簡(jiǎn)化運(yùn)算規(guī)則,節(jié)省運(yùn)算時(shí)間。使減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算,從而進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)。計(jì)算機(jī)是一種有限字長(zhǎng)的數(shù)字系統(tǒng),因此都是有模運(yùn)算

32、,超過(guò)模的運(yùn)算結(jié)果都將溢出。n位二進(jìn)制整數(shù)的模是2 n 。對(duì)于二進(jìn)制數(shù)還有一種更加簡(jiǎn)單的方法由原碼求得補(bǔ)碼。正數(shù)的補(bǔ)碼表示與原碼一樣,X 補(bǔ) =X 原負(fù)數(shù)的補(bǔ)碼是將原碼符號(hào)位保持“1”之后其余各位取相反的碼,末位加1便得到補(bǔ)碼,即取其原碼的反碼再加1X 補(bǔ) =X 反 +1。真值+0和-0的補(bǔ)碼表示是一致的,但在原碼和反碼表示中具有不同的形式。8位補(bǔ)碼機(jī)器數(shù)可以表示-128,但不存在+128的補(bǔ)碼,由此可知8位二進(jìn)制補(bǔ)碼能表示數(shù)的范圍是-128+127。應(yīng)該注意,不存在-128的8位原碼和反碼形式。根據(jù)互補(bǔ)的概念,一個(gè)補(bǔ)碼機(jī)器數(shù)再求一次補(bǔ)就得到機(jī)器數(shù)的原碼了。定點(diǎn)數(shù)與浮點(diǎn)數(shù):(1)定點(diǎn)數(shù)(fix

33、ed-point number)計(jì)算機(jī)處理的數(shù)據(jù)不僅有符號(hào),而且大量的數(shù)帶有小數(shù),小數(shù)點(diǎn)不占有二進(jìn)制位而是隱含有機(jī)器數(shù)里某固定位置上。通常采用兩種簡(jiǎn)單的約定:一種是約定所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在機(jī)器數(shù)的最低位之后,叫定點(diǎn)純整數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)整數(shù)。另一種約定是所有機(jī)器數(shù)的小數(shù)點(diǎn)位置隱含在符號(hào)位之后、有效數(shù)值部分最高位之前,叫定點(diǎn)純小數(shù)機(jī)器數(shù),簡(jiǎn)稱定點(diǎn)小數(shù)。計(jì)算機(jī)采用定點(diǎn)數(shù)表示時(shí),對(duì)于既有整數(shù)又有小數(shù)的原始數(shù)據(jù),需要設(shè)定一個(gè)比例因子,數(shù)據(jù)按比例因子縮小成定點(diǎn)小數(shù)或擴(kuò)大成定點(diǎn)整數(shù)再參加運(yùn)算,結(jié)果輸出時(shí)再按比例折算成實(shí)際值。n位原碼定點(diǎn)整數(shù)的表示范圍是-(2 n-1 -1)X2 n-1 -1,n位

34、原碼定點(diǎn)小數(shù)的表示范圍是-(1-2 -(n-1) )X1-2 -(n-1) 。當(dāng)機(jī)器數(shù)小于定點(diǎn)數(shù)的最小值時(shí),被當(dāng)作0處理,超出定點(diǎn)數(shù)的最大值時(shí),機(jī)器無(wú)法表達(dá),稱作“溢出”,此時(shí)機(jī)器將停止運(yùn)算,屏幕顯示溢出警告。 定點(diǎn)數(shù)表示方法簡(jiǎn)單直觀,不過(guò)定點(diǎn)數(shù)表示數(shù)的范圍小,不易選擇合適的比例因子,運(yùn)算過(guò)程容易產(chǎn)生溢出數(shù)值在計(jì)算機(jī)中表示形式為機(jī)器數(shù),計(jì)算機(jī)只能識(shí)別0和1,使用的是二進(jìn)制,而在日常生活中人們使用的是十進(jìn)制.數(shù)值有正負(fù)之分,計(jì)算機(jī)就用一個(gè)數(shù)的最高位存放符號(hào)(0為正,1為負(fù)).這就是機(jī)器數(shù)的原碼了.假設(shè)機(jī)器能處理的位數(shù)為8.即字長(zhǎng)為1byte,原碼能表示數(shù)值的范圍為(-127-0 +0127)共2

35、56個(gè).有了數(shù)值的表示方法就可以對(duì)數(shù)進(jìn)行算術(shù)運(yùn)算.但是很快就發(fā)現(xiàn)用帶符號(hào)位的原碼進(jìn)行乘除運(yùn)算時(shí)結(jié)果正確,而在加減運(yùn)算的時(shí)候就出現(xiàn)了問(wèn)題,如下: 假設(shè)字長(zhǎng)為8bits( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確.因?yàn)樵趦蓚€(gè)整數(shù)的加法運(yùn)算中是沒(méi)有問(wèn)題的,于是就發(fā)現(xiàn)問(wèn)題出現(xiàn)在帶符號(hào)位的負(fù)數(shù)身上,對(duì)除符號(hào)位外的其余各位逐位取反就產(chǎn)生了反碼.反碼的取值空間和原碼相同且一一對(duì)應(yīng). 下面是反碼的減法運(yùn)算:( 1 )10 - ( 1 ) 10= ( 1

36、 ) 10+ ( -1 ) 10= ( 0 )10(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問(wèn)題.( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確問(wèn)題出現(xiàn)在(+0)和(-0)上,在人們的計(jì)算概念中零是沒(méi)有正負(fù)之分的.(印度人首先將零作為標(biāo)記并放入運(yùn)算之中,包含有零號(hào)的印度數(shù)學(xué)和十進(jìn)制計(jì)數(shù)對(duì)人類文明的貢獻(xiàn)極大).于是就引入了補(bǔ)碼概念. 負(fù)數(shù)的補(bǔ)碼就是對(duì)反碼加一,而正數(shù)不變,正數(shù)的原碼反碼補(bǔ)碼

37、是一樣的.在補(bǔ)碼中用(-128)代替了(-0),所以補(bǔ)碼的表示范圍為:(-1280127)共256個(gè).注意:(-128)沒(méi)有相對(duì)應(yīng)的原碼和反碼, (-128) = (10000000) 補(bǔ)碼的加減運(yùn)算如下:( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10(00000001)補(bǔ) + (11111111)補(bǔ) = (00000000)補(bǔ) = ( 0 ) 正確( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10(00000001) 補(bǔ)+ (11111110) 補(bǔ)= (11111111)補(bǔ) = ( -1 ) 正確

38、所以補(bǔ)碼的設(shè)計(jì)目的是:使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡(jiǎn)化運(yùn)算規(guī)則.使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)所有這些轉(zhuǎn)換都是在計(jì)算機(jī)的最底層進(jìn)行的,而在我們使用的匯編、C等其他高級(jí)語(yǔ)言中使用的都是原碼。-補(bǔ)碼 反碼 二進(jìn)制理解有符號(hào)數(shù)和無(wú)符號(hào)數(shù)回頭看上一節(jié),我們所講的數(shù)都是正數(shù)。同樣是年紀(jì)和工資,前者不需要有負(fù)值,但后者可能需要至少所有的老板都這樣認(rèn)為。那么,負(fù)數(shù)在計(jì)算機(jī)中如何表示呢?這一點(diǎn),你可能聽(tīng)過(guò)兩種不同的回答。一種是教科書(shū),它會(huì)告訴你:計(jì)算機(jī)用“補(bǔ)碼”表示負(fù)數(shù)。可是有關(guān)“補(bǔ)碼”的概念一說(shuō)就得一節(jié)課,這一些我們需要在第6章中用一章的篇幅講2進(jìn)制的一切。再者,用

39、“補(bǔ)碼”表示負(fù)數(shù),其實(shí)一種公式,公式的作用在于告訴你,想得問(wèn)題的答案,應(yīng)該如何計(jì)算。卻并沒(méi)有告訴你為什么用這個(gè)公式就可以和答案? 另一種是一些程序員告訴你的:用二進(jìn)制數(shù)的最高位表示符號(hào),最高位是0,表示正數(shù),最高位是1,表示負(fù)數(shù)。這種說(shuō)法本身沒(méi)錯(cuò),可是如果沒(méi)有下文,那么它就是錯(cuò)的。至少它不能解釋,為什么字符類型的-1用二進(jìn)制表示是“1111 1111”(16進(jìn)制為FF);而不是我們更能理解的“1000 0001”。(為什么說(shuō)后者更好理解呢?因?yàn)榧热徽f(shuō)最高位是1時(shí)表示負(fù)數(shù),那1000 0001不是正好是-1嗎?)。讓我們從頭說(shuō)起。1、你自已決定是否需要有正負(fù)。就像我們必須決定某個(gè)量使用整數(shù)還是實(shí)

40、數(shù),使用多大的范圍數(shù)一樣,我們必須自已決定某個(gè)量是否需要正負(fù)。如果這個(gè)量不會(huì)有負(fù)值,那么我們可以定它為帶正負(fù)的類型。在計(jì)算機(jī)中,可以區(qū)分正負(fù)的類型,稱為有符類型,無(wú)正負(fù)的類型(只有正值),稱為無(wú)符類型。數(shù)值類型分為整型或?qū)嵭停渲姓陀址譃闊o(wú)符類型或有符類型,而實(shí)型則只有符類型。字符類型也分為有符和無(wú)符類型。比如有兩個(gè)量,年齡和庫(kù)存,我們可以定前者為無(wú)符的字符類型,后者定為有符的整數(shù)類型。2、使用二制數(shù)中的最高位表示正負(fù)。首先得知道最高位是哪一位?1個(gè)字節(jié)的類型,如字符類型,最高位是第7位,2個(gè)字節(jié)的數(shù),最高位是第15位,4個(gè)字節(jié)的數(shù),最高位是第31位。不同長(zhǎng)度的數(shù)值類型,其最高位也就不同,但

41、總是最左邊的那位(如下示意)。字符類型固定是1個(gè)字節(jié),所以最高位總是第7位。(紅色為最高位)單字節(jié)數(shù): 1111 1111雙字節(jié)數(shù): 1111 1111 1111 1111四字節(jié)數(shù): 1111 1111 1111 1111 1111 1111 1111 1111當(dāng)我們指定一個(gè)數(shù)量是無(wú)符號(hào)類型時(shí),那么其最高位的1或0,和其它位一樣,用來(lái)表示該數(shù)的大小。當(dāng)我們指定一個(gè)數(shù)量是無(wú)符號(hào)類型時(shí),此時(shí),最高數(shù)稱為“符號(hào)位”。為1時(shí),表示該數(shù)為負(fù)值,為0時(shí)表示為正值。3、無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的范圍區(qū)別。無(wú)符號(hào)數(shù)中,所有的位都用于直接表示該值的大小。有符號(hào)數(shù)中最高位用于表示正負(fù),所以,當(dāng)為正值時(shí),該數(shù)的最大值就會(huì)

42、變小。我們舉一個(gè)字節(jié)的數(shù)值對(duì)比:無(wú)符號(hào)數(shù): 1111 1111 值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20有符號(hào)數(shù): 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20同樣是一個(gè)字節(jié),無(wú)符號(hào)數(shù)的最大值是255,而有符號(hào)數(shù)的最大值是127。原因是有符號(hào)數(shù)中的最高位被挪去表示符號(hào)了。并且,我們知道,最高位的權(quán)值也是最高的(對(duì)于1字節(jié)數(shù)來(lái)說(shuō)是2的7次方=128),所以僅僅少于一位,最大值一下子減半。不過(guò),有符號(hào)數(shù)的長(zhǎng)處是它

43、可以表示負(fù)數(shù)。因此,雖然它的在最大值縮水了,卻在負(fù)值的方向出現(xiàn)了伸展。我們?nèi)砸粋€(gè)字節(jié)的數(shù)值對(duì)比:無(wú)符號(hào)數(shù): 0 - 255有符號(hào)數(shù): -128 - 0 - 127同樣是一個(gè)字節(jié),無(wú)符號(hào)的最小值是 0 ,而有符號(hào)數(shù)的最小值是-128。所以二者能表達(dá)的不同的數(shù)值的個(gè)數(shù)都一樣是256個(gè)。只不過(guò)前者表達(dá)的是0到255這256個(gè)數(shù),后者表達(dá)的是-128到+127這256個(gè)數(shù)。一個(gè)有符號(hào)的數(shù)據(jù)類型的最小值是如何計(jì)算出來(lái)的呢?有符號(hào)的數(shù)據(jù)類型的最大值的計(jì)算方法完全和無(wú)符號(hào)一樣,只不過(guò)它少了一個(gè)最高位(見(jiàn)第3點(diǎn))。但在負(fù)值范圍內(nèi),數(shù)值的計(jì)算方法不能直接使用1* 26 + 1* 25 的公式進(jìn)行轉(zhuǎn)換。在計(jì)算機(jī)中

44、,負(fù)數(shù)除為最高位為1以外,還采用補(bǔ)碼形式進(jìn)行表達(dá)。所以在計(jì)算其值前,需要對(duì)補(bǔ)碼進(jìn)行還原。這些內(nèi)容我們將在第六章中的二進(jìn)制知識(shí)中統(tǒng)一學(xué)習(xí)。這里,先直觀地看一眼補(bǔ)碼的形式:以我們?cè)械臄?shù)學(xué)經(jīng)驗(yàn),在10進(jìn)制中:1 表示正1,而加上負(fù)號(hào):-1 表示和1相對(duì)的負(fù)值。那么,我們會(huì)很容易認(rèn)為在2進(jìn)制中(1個(gè)字節(jié)): 0000 0001 表示正1,則高位為1后:1000 0001應(yīng)該表示-1。然而,事實(shí)上計(jì)算機(jī)中的規(guī)定有些相反,請(qǐng)看下表:二進(jìn)制值(1字節(jié)) 十進(jìn)制值 1000 0000 -128 1000 0001 -127 1000 0010 -126 1000 0011 -125 . . 1111 111

45、0 -2 1111 1111 -1 首先我們看到,從-1到-128,其二進(jìn)制的最高位都是1(表中標(biāo)為紅色),正如我們前面的學(xué)。然后我們有些奇怪地發(fā)現(xiàn),1000 0000 并沒(méi)有拿來(lái)表示 -0;而1000 0001也不是拿來(lái)直觀地表示-1。事實(shí)上,-1 用1111 1111來(lái)表示。怎么理解這個(gè)問(wèn)題呢?先得問(wèn)一句是-1大還是-128大?當(dāng)然是 -1 大。-1是最大的負(fù)整數(shù)。以此對(duì)應(yīng),計(jì)算機(jī)中無(wú)論是字符類型,或者是整數(shù)類型,也無(wú)論這個(gè)整數(shù)是幾個(gè)字節(jié)。它都用全1來(lái)表示 -1。比如一個(gè)字節(jié)的數(shù)值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和現(xiàn)實(shí)中的計(jì)算結(jié)果完全一致。1111 1111 - 1 = 1111 1110,而1111

溫馨提示

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

評(píng)論

0/150

提交評(píng)論