(二)數(shù)值信息在計(jì)算機(jī)內(nèi)的表示
1.整數(shù)(定點(diǎn)數(shù))的表示
整數(shù)不使用小數(shù)點(diǎn),所以它也叫做“定點(diǎn)數(shù)”。計(jì)算機(jī)中的整數(shù)分為兩類:不帶符號(hào)的整數(shù)(Unsigned Integer),帶符號(hào)的整數(shù)(Signed Integer)。
不帶符號(hào)的整數(shù)常用于表示地址等正整數(shù),它們可以是8位、16位甚至32位。8個(gè)二進(jìn)位表示的正整數(shù)其取值范是0~255(2 8 -1),16個(gè)二進(jìn)位表示的正整數(shù)其取值范是0~65535(2 16 -1),32個(gè)二進(jìn)位表示的正整數(shù)其取值范是0~2 32 -1。
帶符號(hào)的整數(shù)必須使用一個(gè)二進(jìn)位作為其符號(hào)位,一般總是最高位(最左面的一位),“0”表示“+”(正數(shù)),“1”表示“-”(負(fù)數(shù)),其余各位則用來表示數(shù)值的大小。
為了內(nèi)部運(yùn)算處理方便,負(fù)整數(shù)在計(jì)算機(jī)內(nèi)不止一種表示方法。上面的表示法稱為“原碼”,另外的兩種方法分別叫做“反碼”和“補(bǔ)碼”。
負(fù)數(shù)使用反碼表示時(shí),符號(hào)位仍為“1”,但絕對(duì)值部分卻正好與原碼相反(“0”變?yōu)椤?”,“1”變?yōu)椤?”)。
負(fù)數(shù)使用補(bǔ)碼表示時(shí),符號(hào)位也是“1”,但絕對(duì)值部分卻是反碼的個(gè)位加“1”后所得到的結(jié)果。注意:正整數(shù)無論采用原碼、反碼還是補(bǔ)碼表示,其編碼都是相同的,并無區(qū)別。
還有一種整數(shù)也經(jīng)常在計(jì)算機(jī)內(nèi)使用,稱為“二進(jìn)制編碼的十進(jìn)制”整數(shù)(Binary Coded Decimal,簡(jiǎn)稱BCD整數(shù)),它使用4個(gè)二進(jìn)位表示1個(gè)十進(jìn)制數(shù)字,符號(hào)的表示仍與上相同。
2.實(shí)數(shù)(浮點(diǎn)數(shù))的表示
實(shí)數(shù)也叫浮點(diǎn)數(shù),因?yàn)樗男?shù)點(diǎn)位置不固定。
一個(gè)實(shí)數(shù)總可以表達(dá)成一個(gè)純小數(shù)和一個(gè)乘冪之積。
任意一個(gè)實(shí)數(shù),在計(jì)算機(jī)內(nèi)部都可以用“指數(shù)”(這是整數(shù))和“尾數(shù)”(這是純小數(shù))來表示,這種用指數(shù)和尾數(shù)表示實(shí)數(shù)的方法叫做“浮點(diǎn)表示法”。所以,在計(jì)算機(jī)中實(shí)數(shù)也叫做“浮點(diǎn)數(shù)”,而整數(shù)則叫做“定點(diǎn)數(shù)”。
由于指數(shù)可以選用不同的編碼(原碼、補(bǔ)碼等),尾數(shù)的格式和小數(shù)點(diǎn)位置也可以有不同規(guī)定,因此,浮點(diǎn)數(shù)的表示方法不是惟一的。不同計(jì)算機(jī)可以有不同的規(guī)定,這就引起了相互間數(shù)據(jù)格式的不兼容性。為此,美國(guó)電氣與電子工程師協(xié)會(huì)(IEEE)制訂了有關(guān)浮點(diǎn)數(shù)表示的工業(yè)標(biāo)準(zhǔn)IEEE754,已被當(dāng)代所有各類處理器采用。
浮點(diǎn)數(shù)的長(zhǎng)度可以是32位、64位甚至更長(zhǎng),位數(shù)越多,可表示的數(shù)值的范圍越大,精度也越高。
(三)整數(shù)的性質(zhì)和運(yùn)算
1.整數(shù)補(bǔ)碼表示的數(shù)學(xué)意義
無符號(hào)二進(jìn)制整數(shù)的原碼,其編碼與數(shù)值之間的關(guān)系如下。
設(shè)K n Kn-1 …K1 K0是一個(gè)無符號(hào)二進(jìn)制整數(shù),S是它相應(yīng)的十進(jìn)制數(shù)值,則
S=Kn ×2 n +Kn-1 ×2n-1 +…+K1 ×21 +K0 ×2 0
其中的Kj(j=n,n-1,…1,0)只能為0或1,Kn 是最高位,K0 是最低位(個(gè)位)。
Kn Kn-1 …K1 K0 用來表示帶符號(hào)整數(shù)時(shí),Kn 是符號(hào)位,Kn-1 …K1 K0 則為數(shù)值位。若Kn Kn-1 …K1 K0 表示的是原碼編碼的整數(shù),則十進(jìn)制數(shù)值S與編碼的關(guān)系是:
S=Kn-1 ×2n-1 +…+K1×2 1 +K0 ×2 0 (當(dāng)Kn =0)
S=-(Kn-1 ×2 n-1 +…+K 1 ×2 1 +K0 ×20 )
(當(dāng)Kn =1)
但是,如果Kn n-1 …K1 K0 表示的是補(bǔ)碼編碼的整數(shù)時(shí),不論符號(hào)位K n 如何,十進(jìn)制數(shù)值S與編碼的關(guān)系可以統(tǒng)一地表示成為:
S=Kn ×(-2n )+Kn-1 ×2n-1 +…+K1 ×21 +K0 ×20 采用補(bǔ)碼表示的n位二進(jìn)制帶符號(hào)整數(shù)的有效范圍是: -2n-1 ≤S≤2n-1 -1
計(jì)算機(jī)在整數(shù)運(yùn)算過程中,若結(jié)果超出此允許范圍,則稱為發(fā)生“溢出”。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |