




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.1.3二進(jìn)制整數(shù)編碼51.4二進(jìn)制小數(shù)編碼5.1.5二進(jìn)制補(bǔ)碼運(yùn)算5.1.1常用數(shù)制的特征5.1.2不同數(shù)制的轉(zhuǎn)換[增強(qiáng)版]5.1.1常用數(shù)制的特征1、十進(jìn)制數(shù)編碼進(jìn)制是按進(jìn)位方式計(jì)數(shù)的數(shù)制系統(tǒng)。運(yùn)算規(guī)則:逢十進(jìn)一,借一當(dāng)十。十進(jìn)制中,各數(shù)字的權(quán)為10的整數(shù)次冪?!纠?-1】將十進(jìn)制數(shù)708按位權(quán)展開。708=7×102+8×100【例5-2】將十進(jìn)制數(shù)12.34按位權(quán)方式展開。十進(jìn)制數(shù)表示方式:[23]10或23D。12.34=1×101+2×100+3×10-1+4×10-2基數(shù)權(quán)數(shù)碼5.1.1常用數(shù)制的特征2、二進(jìn)制數(shù)編碼基本符號(hào):0、1;運(yùn)算規(guī)則:逢二進(jìn)一,借一當(dāng)二。四則運(yùn)算規(guī)則:(1)加法運(yùn)算:0+0=0,0+1=1,1+0=1,1+1=10(有進(jìn)位)(2)減法運(yùn)算:0-0=0,1-0=1,1-1=0,0-1=1(有借位)(3)乘法運(yùn)算:0×0=0,1×0=0,0×1=0,1×1=1(4)除法運(yùn)算:0÷1=0,1÷1=1(除數(shù)不能為0)
101001015.1.1常用數(shù)制的特征【案例】二進(jìn)制數(shù)的四則運(yùn)算。5.1.1常用數(shù)制的特征【擴(kuò)展】二進(jìn)制數(shù)的移位運(yùn)算。乘2相當(dāng)于左移1位后,在尾部補(bǔ)0;除2相當(dāng)于右移1位后,在高位補(bǔ)0。5.1.1常用數(shù)制的特征二進(jìn)制中,數(shù)字符號(hào)的權(quán)為2的整數(shù)次冪。如,23,22,21,20,2-1,2-2……?!纠?-3】將二進(jìn)制數(shù)1011按位權(quán)展開。[1011]2=1×23+1×21+1×20【例5-4】將二進(jìn)制數(shù)1011.0101按位權(quán)展開。[1011.0101]2=1×23+1×21+1×20+1×2-2+1×2-4二進(jìn)制數(shù)用下標(biāo)或在數(shù)字尾部加B表示如,[1011]2或1011B。5.1.1常用數(shù)制的特征3、十六進(jìn)制數(shù)編碼十六進(jìn)制符號(hào):0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。運(yùn)算規(guī)則:逢16進(jìn)1,借1當(dāng)16。計(jì)算機(jī)內(nèi)部并不采用十六進(jìn)制數(shù)進(jìn)行運(yùn)算;十六進(jìn)制數(shù)是為了便于專業(yè)人員方便轉(zhuǎn)換為二進(jìn)制數(shù)。十六進(jìn)制數(shù)用下標(biāo)或在數(shù)字尾部加H表示。如:[18]16或18H;有時(shí)用前置“0x”表示十六進(jìn)制數(shù);如:0x000012A5表示十六進(jìn)制數(shù)12A5。5.1.1常用數(shù)制的特征常用數(shù)制之間的關(guān)系如表5-1所示。十進(jìn)制數(shù)十六進(jìn)制數(shù)二進(jìn)制數(shù)BCD編碼000000000011000100012200100010330011001144010001005501010101660110011077011101118810001000991001100110A10100001000011B10110001000112C11000001001013D11010001001114E11100001010015F1111000101015.1.1常用數(shù)制的特征4、任意進(jìn)制數(shù)的表示方法任何進(jìn)位制都能用有限個(gè)數(shù)字符號(hào)表示所有數(shù)。進(jìn)制稱為基數(shù),如二進(jìn)制的基數(shù)為2;不同數(shù)位上的數(shù)字有不同的位權(quán)。任意R進(jìn)制數(shù),可用公式(5-1)表示:N=An-1×Rn-1+An-2×Rn-2+…+A0×R0+A-1×R-1+…+A-m×R-m
(5-1)A為任意進(jìn)制數(shù),R為基數(shù),n為整數(shù)的位數(shù)和權(quán),m為小數(shù)的位數(shù)和權(quán)?!纠?-5】十進(jìn)制數(shù)43.21按位權(quán)展開表示。43.21=4×101+3×100+2×10-1+1×10-2【例5-6】二進(jìn)制數(shù)1101.11按位權(quán)展開表示。[1101.11]2=1×23+1×22+0×21+1×2-0+1×2-1+1×2-2《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.1.3二進(jìn)制整數(shù)編碼51.4二進(jìn)制小數(shù)編碼5.1.5二進(jìn)制補(bǔ)碼運(yùn)算5.1.1常用數(shù)制的特征5.1.2不同數(shù)制的轉(zhuǎn)換5.1.2不同數(shù)制的轉(zhuǎn)換1、二進(jìn)制數(shù)與十進(jìn)制數(shù)之間的轉(zhuǎn)換表5-2給出了2的整數(shù)次冪和十進(jìn)制數(shù)值的對(duì)應(yīng)關(guān)系。將二進(jìn)制數(shù)各位的數(shù)乘以對(duì)應(yīng)的權(quán)再累加起來。【例5-8】將[1101.101]2按位權(quán)展開轉(zhuǎn)換成十進(jìn)制數(shù)。[1101.101]2=[23+22+20+2-1+2-3]10
=[8+4+1+0.5+0.125]10=[13.625]102n2827262524232221202-12-22-32-4十進(jìn)制數(shù)值25612864321684210.50.250.1250.06255.1.2不同數(shù)制的轉(zhuǎn)換2、十進(jìn)制數(shù)與二進(jìn)制數(shù)轉(zhuǎn)換整數(shù)部分與小數(shù)部分分開轉(zhuǎn)換;整數(shù)部分采用除2取余法;小數(shù)部分采用乘2取整法?!纠?-9】十進(jìn)制18.8125轉(zhuǎn)換為二進(jìn)制數(shù)。整數(shù)除2取余,余數(shù)從低到高排列:18÷2=9余
0,9÷2=4余
1,4÷2=2余
0,2÷2=1余
0,1小于2不再除余
1;18=[10010]2;小數(shù)乘2取整,積的整數(shù)從高到低排列:0.8125×2=
1.625,0.625×2=
1.25,0.25×2=
0.5,0.50×2=
1.0;0.8125=[0.1101]2運(yùn)算結(jié)果:[18.8125]10=[10010.1101]25.1.2不同數(shù)制的轉(zhuǎn)換【例5-9】十進(jìn)制18.8125轉(zhuǎn)換為二進(jìn)制數(shù)的豎式計(jì)算。5.1.2不同數(shù)制的轉(zhuǎn)換【案例】十進(jìn)制數(shù)100.345轉(zhuǎn)換為二進(jìn)制數(shù)的豎式計(jì)算。100.345D≈1100100.01011B1.3800.34520.69022
0.7602
1.520210025022521226232100010011
1.040余數(shù)達(dá)到精度要求后不再乘小數(shù)部分整數(shù)部分5.1.2不同數(shù)制的轉(zhuǎn)換3、二進(jìn)制數(shù)與十六進(jìn)制數(shù)轉(zhuǎn)換整數(shù)自右向左4位一組,不足4位時(shí),在整數(shù)前面加0補(bǔ)足4位;小數(shù)自左向右4位一組,不足4位時(shí),在小數(shù)后面加0補(bǔ)足4位;然后每4位二進(jìn)制數(shù)對(duì)應(yīng)1位十六進(jìn)制數(shù),即可得到十六進(jìn)制數(shù)?!纠?-10】將二進(jìn)制數(shù)111101.010111轉(zhuǎn)換為十六進(jìn)制數(shù)。[111101.010111]2=[00111101.01011100]2=[3D.5C]1600111101?010111003D?5C5.1.2不同數(shù)制的轉(zhuǎn)換4、十六進(jìn)制數(shù)與二進(jìn)制數(shù)轉(zhuǎn)換以小數(shù)點(diǎn)為界,1位十六進(jìn)制數(shù)對(duì)應(yīng)4位二進(jìn)制數(shù)?!纠?-11】:將十六進(jìn)制數(shù)4B.61轉(zhuǎn)換為二進(jìn)制數(shù)。[4B.61]16=[01001011.01100001]24B?6101001011?011000015.1.2不同數(shù)制的轉(zhuǎn)換5、BCD編碼數(shù)制轉(zhuǎn)換存在的問題:需要進(jìn)行乘法和除法運(yùn)算,計(jì)算速度不快;需要進(jìn)行浮點(diǎn)運(yùn)算,存儲(chǔ)和計(jì)算較為復(fù)雜,計(jì)算效率低。BCD碼是一種二—十進(jìn)制編碼;BCD碼用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù)。8421碼是最常用的BCD編碼,它各位的權(quán)值為:8、4、2、1;BCD碼只選用了4位二進(jìn)制編碼中前10組代碼。BCD碼不使用1010~1111六組編碼;編碼到1001后就產(chǎn)生進(jìn)位。5.1.2不同數(shù)制的轉(zhuǎn)換BCD編碼與十進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系如圖5-4所示?!纠?-12】將十進(jìn)制數(shù)10.89轉(zhuǎn)換為BCD碼。10.89=[00010000.10001001]BCD【例5-13】將BCD碼[01110110.10000001]BCD轉(zhuǎn)換為十進(jìn)制數(shù)。[01110110.10000001]BCD=76.81十進(jìn)制數(shù)012345678910BCD編碼000000010010001101000101011001111000100100010000十進(jìn)制數(shù)10?89BCD碼00010000?10001001BCD碼01110110?10000001十進(jìn)制數(shù)76?815.1.2不同數(shù)制的轉(zhuǎn)換常用數(shù)制之間的轉(zhuǎn)換方法如圖5-8所示。《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.1.3二進(jìn)制整數(shù)編碼51.4二進(jìn)制小數(shù)編碼5.1.5二進(jìn)制補(bǔ)碼運(yùn)算5.1.1常用數(shù)制的特征5.1.2不同數(shù)制的轉(zhuǎn)換5.1.3二進(jìn)制整數(shù)編碼1、無符號(hào)二進(jìn)制整數(shù)編碼形式運(yùn)算結(jié)果超出數(shù)據(jù)表示范圍稱為“溢出”。如,8位無符號(hào)數(shù)運(yùn)算結(jié)果大于255時(shí),就會(huì)產(chǎn)生“溢出”?!纠?-15】[11001000]2+[01000001]=100001001(最高位1溢出)編碼字節(jié)越長,數(shù)值表示范圍越大,越不容易導(dǎo)致“溢出”問題?!耙钥臻g換時(shí)間”的計(jì)算思維方式:如果小數(shù)值用1字節(jié)存儲(chǔ),大數(shù)值用多字節(jié)存儲(chǔ),這種變長存儲(chǔ)會(huì)使計(jì)算復(fù)雜化,因?yàn)樾枰黾佣x數(shù)據(jù)長度位;計(jì)算時(shí)需要對(duì)每個(gè)數(shù)據(jù)進(jìn)行長度判斷。因此,程序設(shè)計(jì)時(shí)先要定義數(shù)據(jù)類型,同一類型數(shù)據(jù)采用統(tǒng)一存儲(chǔ)長度。這樣雖然會(huì)浪費(fèi)一些存儲(chǔ)空間,但提高了運(yùn)算速度。5.1.3二進(jìn)制整數(shù)編碼【例5-16】不同存儲(chǔ)長度時(shí),無符號(hào)十進(jìn)制數(shù)[86]10的編碼形式。1字節(jié)存儲(chǔ):01010110
2字節(jié)存儲(chǔ):0000000001010110
4字節(jié)存儲(chǔ):000000000000000000000000010101105.1.3二進(jìn)制整數(shù)編碼2、帶符號(hào)二進(jìn)制整數(shù)編碼形式計(jì)算機(jī)用最高位作為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù),其余位表示數(shù)值大小。符號(hào)化的二進(jìn)制數(shù)稱為機(jī)器數(shù)或原碼;沒有符號(hào)化的數(shù)稱為真值。機(jī)器數(shù)長度固定(如8、16、32、64位)。當(dāng)二進(jìn)制數(shù)位數(shù)不夠時(shí),整數(shù)在最高位前用0補(bǔ)足,小數(shù)在最低位后用0補(bǔ)足?!景咐慷M(jìn)制數(shù)+1011真值與機(jī)器數(shù)區(qū)別如下。真值8位機(jī)器數(shù)(原碼)16位機(jī)器數(shù)(原碼)+101110001011100000000000101115.1.3二進(jìn)制整數(shù)編碼3、常用數(shù)據(jù)類型的存儲(chǔ)長度和表示范圍計(jì)算機(jī)中,同一類型的數(shù)據(jù)具有相同的存儲(chǔ)長度,與數(shù)據(jù)的實(shí)際長度無關(guān)。C語言中數(shù)據(jù)類型的長度以及數(shù)值域(32位編譯器)數(shù)據(jù)類型標(biāo)識(shí)符類型說明存儲(chǔ)長度(字節(jié))數(shù)值范圍有效位char字符型1——unsignedchar無符號(hào)字符型2——shortint短整型2-32768~327675unsignedshortint無符號(hào)短整型20~655355int整型4-2147483648~214748364710unsignedint無符號(hào)整型40~429496729510float實(shí)型(浮點(diǎn)單精度)41.18×10-38~3.40×1038
7double實(shí)型(浮點(diǎn)雙精度)82.23×10-308~1.79×10308
15longdouble實(shí)型(浮點(diǎn)長雙精度)103.37×10-4932~1.18×104932
195.1.3二進(jìn)制整數(shù)編碼4、大整數(shù)的表示與計(jì)算一般情況下,最大有效數(shù)據(jù)為19位。超過編程語言表示范圍的大整數(shù),必須采用其它方式處理?!纠?-19】在Excel2010中,計(jì)算12345000000000000000+9999計(jì)算結(jié)果=12345000000000000000可見加數(shù)被完全忽略,因?yàn)镋xcel只有16位有效數(shù)據(jù);超出16位時(shí),雖然可以表達(dá)和計(jì)算,但將產(chǎn)生計(jì)算誤差。5.1.3二進(jìn)制整數(shù)編碼密碼算法都建立在大整數(shù)運(yùn)算基礎(chǔ)上。如,要存儲(chǔ)100位有效數(shù)時(shí),任何編程語言都無法處理;簡單方法:用字符串?dāng)?shù)組來存儲(chǔ)這個(gè)100位的有效數(shù)。大整數(shù)只能一位一位或幾位幾位輸入;或者用字符串的形式輸入。大整數(shù)加法:模擬豎式加法,從個(gè)位逐位相加;超過或達(dá)到10則進(jìn)位;進(jìn)位保存在中間變量中;相加結(jié)果存放在數(shù)組中。大整數(shù)的加減運(yùn)算必須編寫程序?qū)崿F(xiàn)。5.1.3二進(jìn)制整數(shù)編碼【例5-20】計(jì)算:12345678901234567890+97661470000796256798
12345678901234567890+97661470000796256798
進(jìn)位1
10
1
0
0
1
01
1
0110007148902030824688《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.1.3二進(jìn)制整數(shù)編碼51.4二進(jìn)制小數(shù)編碼5.1.5二進(jìn)制補(bǔ)碼運(yùn)算5.1.1常用數(shù)制的特征5.1.2不同數(shù)制的轉(zhuǎn)換5.1.4二進(jìn)制小數(shù)編碼1、定點(diǎn)數(shù)編碼方法定點(diǎn)數(shù):小數(shù)點(diǎn)位置固定不變的數(shù)。定點(diǎn)數(shù)有定點(diǎn)整數(shù)和定點(diǎn)小數(shù)。增加存儲(chǔ)長度可以提高小數(shù)的精度?!纠?-21】將二進(jìn)制數(shù)-0.1001001用2個(gè)字節(jié)存儲(chǔ)為定點(diǎn)小數(shù)。定點(diǎn)整數(shù)和定點(diǎn)小數(shù):11001001
00000000S小數(shù)點(diǎn)符號(hào)位S小數(shù)點(diǎn)5.1.4二進(jìn)制小數(shù)編碼2、浮點(diǎn)數(shù)編碼方法實(shí)數(shù)可以表示成:一個(gè)純小數(shù)和一個(gè)乘冪之積的形式?!纠?-22】123.45=0.12345103【例5-23】0.0034574=0.3457410-2【例5-24】3.14=3.14100=0.314101(規(guī)格化表示方式)小數(shù)點(diǎn)位置變化的數(shù)稱為浮點(diǎn)數(shù)。浮點(diǎn)數(shù)指數(shù)表示:指數(shù)稱為“階碼”,小數(shù)稱為“尾數(shù)”。二進(jìn)制數(shù)的階碼和尾數(shù)都用二進(jìn)制數(shù)表示?!纠?-25】[1001.011]2=[0.1001011]22100【例5-26】[-0.0010101]2=[-0.10101]22-105.1.4二進(jìn)制小數(shù)編碼任意二進(jìn)制浮點(diǎn)數(shù)公式:N=±M×2±E
(5-2)式中,M為尾數(shù)(純小數(shù)部分),整數(shù)E為階碼,M與E都帶符號(hào)。例如:-1101B=-0.1101B×24
階碼小數(shù)點(diǎn)尾數(shù)二進(jìn)制浮點(diǎn)數(shù)特征:尾數(shù)的位數(shù)決定數(shù)的精度;階碼的位數(shù)決定數(shù)的范圍。階符階碼E尾符S尾數(shù)M
(定點(diǎn)整數(shù))
(定點(diǎn)小數(shù))5.1.4二進(jìn)制小數(shù)編碼【例5-27】[-0.00011011]2=[-0.11011]2×2-11的32位編碼如下:以上數(shù)據(jù)在計(jì)算機(jī)中的32位存儲(chǔ)格式如下:階符階碼尾符尾數(shù)10000011111011000000000000000000312423
1615870100000111110110000000000000000005.1.4二進(jìn)制小數(shù)編碼3.二進(jìn)制小數(shù)的截?cái)嗾`差(1)浮點(diǎn)數(shù)存儲(chǔ)空間不夠引起的截?cái)嗾`差截?cái)嗾`差(舍入誤差):
二進(jìn)制浮點(diǎn)數(shù)存儲(chǔ)時(shí),如果尾數(shù)存儲(chǔ)空間不夠,會(huì)導(dǎo)致部分小數(shù)丟失。
可以使用較長的尾數(shù)域,減少截?cái)嗾`差?!纠?-28】二進(jìn)制數(shù)10.101存儲(chǔ)為8位浮點(diǎn)數(shù)時(shí),將引起截?cái)嗾`差。010010101(最后一位丟失)5.1.4二進(jìn)制小數(shù)編碼(2)數(shù)值轉(zhuǎn)換引起的截?cái)嗾`差截?cái)嗾`差的另外一個(gè)來源是無窮展開式。二進(jìn)制中,有無窮展開式的數(shù)值多于十進(jìn)制數(shù)。十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制時(shí),不能保證精確轉(zhuǎn)換;二進(jìn)制小數(shù)轉(zhuǎn)換成十進(jìn)制,也遇到同樣的問題。【例5-29】十進(jìn)制數(shù)0.8轉(zhuǎn)換為二進(jìn)制時(shí)為:0.11001100......【例5-30】十進(jìn)制數(shù)1/10轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),也會(huì)遇到無窮展開式問題。十—二進(jìn)制小數(shù)轉(zhuǎn)換時(shí),可根據(jù)精度要求取近似值,或采用0舍1入規(guī)則。5.1.4二進(jìn)制小數(shù)編碼(3)浮點(diǎn)數(shù)的相加順序一個(gè)大數(shù)加上一個(gè)小數(shù),那么小數(shù)可能被截?cái)?。多個(gè)數(shù)值相加的原則是先相加小數(shù)字,避免產(chǎn)生截?cái)嗾`差。大多數(shù)商用軟件提供的計(jì)算精度已經(jīng)足夠了。特殊應(yīng)用領(lǐng)域(如導(dǎo)航系統(tǒng)),小誤差可能在運(yùn)算中累加,產(chǎn)生嚴(yán)重后果。5.1.4二進(jìn)制小數(shù)編碼4、浮點(diǎn)數(shù)運(yùn)算的精度十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),需要的二進(jìn)制數(shù)位數(shù)為:Log2(10)/Log2(2)=3.33(bit)如,將32位(包含小數(shù)點(diǎn))十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)時(shí);總共需要:32×3.3=106位二進(jìn)制數(shù)。IEEE754標(biāo)準(zhǔn)規(guī)定的浮點(diǎn)數(shù)規(guī)格如表5-4所示。浮點(diǎn)數(shù)規(guī)格總長(位)符號(hào)位S(位)階碼e(位)尾數(shù)M(位)尾數(shù)最大有效值單精度浮點(diǎn)數(shù)規(guī)格3218238388608雙精度浮點(diǎn)數(shù)規(guī)格64111524.5×1015擴(kuò)展雙精度數(shù)規(guī)格180115641.8×1019擴(kuò)展雙精度數(shù)規(guī)格21281151125.1×10335.1.4二進(jìn)制小數(shù)編碼【擴(kuò)展】二進(jìn)制浮點(diǎn)數(shù)的存儲(chǔ)。26.0D=11010.0B=+1.10100*2401000001110100000000000000000000+127=131=10000011B單精度32位例:《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.1.3二進(jìn)制整數(shù)編碼51.4二進(jìn)制小數(shù)編碼5.1.5二進(jìn)制補(bǔ)碼運(yùn)算5.1.1常用數(shù)制的特征5.1.2不同數(shù)制的轉(zhuǎn)換5.1.5二進(jìn)制補(bǔ)碼運(yùn)算1、原碼在二進(jìn)制數(shù)運(yùn)算中存在的問題原碼運(yùn)算的復(fù)雜性:做x+y運(yùn)算時(shí),要判別兩個(gè)數(shù)的符號(hào),增加了運(yùn)算時(shí)間。原碼會(huì)出現(xiàn):[00000000]2=[+0]10,[10000000]2=[-0]10的“正0負(fù)0”問題。符號(hào)位會(huì)對(duì)運(yùn)算結(jié)果產(chǎn)生影響,導(dǎo)致運(yùn)算出錯(cuò)?!纠?-31】[01000010]2+[01000001]2=[10000011]2(進(jìn)位導(dǎo)致的錯(cuò)誤)【例5-32】[00000010]2+[10000001]2=[10000011]2(符號(hào)位相加導(dǎo)致的錯(cuò)誤)在只考慮數(shù)有效位的情況下,兩個(gè)互為補(bǔ)碼的數(shù)相加,結(jié)果有效位為0時(shí),稱這兩個(gè)數(shù)互補(bǔ)。例如,10的補(bǔ)碼有:(1,9)、(2,8)、(3,7)、(4,6)、(5,5)。二進(jìn)制數(shù)的補(bǔ)碼可以帶符號(hào)運(yùn)算,而運(yùn)算結(jié)果不會(huì)產(chǎn)生錯(cuò)誤;計(jì)算機(jī)中的數(shù)值廣泛采用補(bǔ)碼的形式進(jìn)行存儲(chǔ)和計(jì)算。5.1.5二進(jìn)制補(bǔ)碼運(yùn)算2、二進(jìn)制數(shù)的反碼編碼方法引入反碼是補(bǔ)碼運(yùn)算的需要。二進(jìn)制正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼是對(duì)該數(shù)的原碼除符號(hào)位外各位取反。【例5-33】二進(jìn)制數(shù)字長為8位時(shí),[+5]10=[00000101]原=[00000101]反【例5-34】二進(jìn)制數(shù)字長為8位時(shí),[-5]10=[10000101]原=[11111010]反5.1.5二進(jìn)制補(bǔ)碼運(yùn)算3、二進(jìn)制數(shù)的補(bǔ)碼編碼方法正數(shù)的補(bǔ)碼=原碼。負(fù)數(shù)的補(bǔ)碼=原碼取反+1。原碼、反碼和補(bǔ)碼,符號(hào)位都不變?!纠?-35】[10]10的原碼為:[10]10=[00001010]原[-10]10的原碼為:[-10]10=[10001010]原【例5-36】[10]10的反碼為:[10]10=[00001010]反[-10]10的反碼為:=[11110101]反【例5-37】[10]10的補(bǔ)碼為:[10]10=[00001010]補(bǔ)[-10]10的補(bǔ)碼為:[-10]10=[11110110]補(bǔ)5.1.5二進(jìn)制補(bǔ)碼運(yùn)算二進(jìn)制數(shù)各種編碼的表示方法如表5-5所示。十進(jìn)制數(shù)真值原碼反碼補(bǔ)碼0000000000000000000000000000100000001111111100000000+1+1000000010000000100000001-1-1100000011111111011111111+15+1111000011110111000001110001-15-1111100011111111000011110001-127-1111111111111111000000010000001-128-10000000——100000005.1.5二進(jìn)制補(bǔ)碼運(yùn)算4、補(bǔ)碼的運(yùn)算規(guī)則補(bǔ)碼算法思想:把正數(shù)和負(fù)數(shù)都轉(zhuǎn)換為補(bǔ)碼形式,使減法變成加一個(gè)負(fù)數(shù)的形式,從而使正負(fù)數(shù)的加減運(yùn)算轉(zhuǎn)換為單純的加法運(yùn)算。補(bǔ)碼運(yùn)算結(jié)論:補(bǔ)碼兩數(shù)加法運(yùn)算時(shí),結(jié)果仍為補(bǔ)碼。補(bǔ)碼的符號(hào)位可以與數(shù)值位一同參與運(yùn)算。運(yùn)算結(jié)果如有進(jìn)位,判斷是否溢出;如果不是溢出,則將進(jìn)位舍去不要。5.1.5二進(jìn)制補(bǔ)碼運(yùn)算不論對(duì)正數(shù)和負(fù)數(shù),補(bǔ)碼都具有以下性質(zhì):
[A]補(bǔ)+[B]補(bǔ)=[A+B]補(bǔ)
(5-3)
[[A]補(bǔ)]補(bǔ)=[A]原
(5-4)式中,A、B為正整數(shù)、負(fù)整數(shù)、0均可。小數(shù)的情況,在以后課程討論?!纠?-38】A=[-70]10,B=[-55]10,求A與B相加之和。(1)將A、B轉(zhuǎn)換為補(bǔ)碼;[-70]10=[-(64+4+2)]10=[11000110]原=[10111001]反+[00000001]=[10111010]補(bǔ)[-55]10=[-(32+16+4+2+1)]10=[10110111]原=[11001000]反+[00000001]=[11001001]補(bǔ)(2)進(jìn)行補(bǔ)碼加法運(yùn)算;
10111010
+11001001進(jìn)位1自然丟失→1100000115.1.5二進(jìn)制補(bǔ)碼運(yùn)算(3)將運(yùn)算結(jié)果(補(bǔ)碼)進(jìn)行求補(bǔ)運(yùn)算(取反加1),得到原碼。[10000011]補(bǔ)=[11111100]反+[00000001]=[11111101]原=[-125]10結(jié)論:補(bǔ)碼加法運(yùn)算不用考慮數(shù)值正負(fù),直接進(jìn)行補(bǔ)碼加法即可。減法可以通過補(bǔ)碼的加法運(yùn)算實(shí)現(xiàn)。如果運(yùn)算結(jié)果最高位為0,表示結(jié)果為正數(shù);如果最高位為1,則結(jié)果為負(fù)數(shù)?!队?jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.2.3統(tǒng)一字符編碼5.2.4聲音數(shù)字化處理5.2.5圖像數(shù)字化處理5.2.1英文字符編碼5.2.2漢字字符編碼5.2.1英文字符編碼1、BCDIC編碼早期計(jì)算機(jī)字符編碼從霍爾瑞斯(HermanHollerith)卡片發(fā)展而來;霍爾瑞斯卡片在1890年的美國人口普查中使用。6位字符編碼系統(tǒng)BCDIC(二進(jìn)制與十進(jìn)制交換編碼)源自Hollerith碼;1960年代逐步擴(kuò)展為8位EBCDIC碼;IBM大型計(jì)算機(jī)采用EBCDIC碼標(biāo)準(zhǔn)。5.2.1英文字符編碼2、ASCII編碼(1)ASCII碼編碼規(guī)則ASCII(美國信息交換標(biāo)準(zhǔn)碼)碼用7位二進(jìn)制數(shù)對(duì)1個(gè)字符進(jìn)行編碼;ASCII可以表示27=128個(gè)字符編碼。計(jì)算機(jī)以1個(gè)字節(jié)存放1個(gè)ASCII碼字符;ASCII碼每個(gè)字節(jié)最高位為0;(2)ASCII碼應(yīng)用案例【例5-39】“Hello”的ASCII編碼。Hello01001000011001010110110001101100011011115.2.1英文字符編碼(1)ASCII碼編碼規(guī)則5.2.1英文字符編碼(3)ASCII碼編碼規(guī)律0~9字符碼高4位編碼為0011,低4位為0000~1001;去掉高4位時(shí),低4位正好是0~9的二進(jìn)制數(shù)。ASCII碼26個(gè)字母編碼是連續(xù)的;字母A~Z碼值為65~90;字母a~z碼值為97~122;大寫字母第6位值為0,小寫字母第6位值為1;它們之間的ASCII碼值十進(jìn)制形式相差32;ASCII編碼定義了33個(gè)無法顯示的控制碼;ASCII控制碼目前極少使用。5.2.1英文字符編碼3、擴(kuò)展ASCII碼(ANSI碼)ASCII碼不能滿足非英語國家的需要。如,無法表示英磅符號(hào)(£);如,無法顯示重音符號(hào)(é);如,無法顯示希臘語、希伯來語、阿拉伯語、俄語、漢語等。ASCII碼只用了7位,很多國家就使用128~255的碼字來表示其他符號(hào)。1981年P(guān)C機(jī)推出時(shí),就固化了一個(gè)256個(gè)符號(hào)的字符集。當(dāng)PC機(jī)在美國之外銷售時(shí),這些擴(kuò)展的ASCII碼就完全亂套了。5.2.1英文字符編碼ANSI(美國國家標(biāo)準(zhǔn)學(xué)會(huì))標(biāo)準(zhǔn)結(jié)束了這種混亂。ANSI標(biāo)準(zhǔn):低128個(gè)碼字采用標(biāo)準(zhǔn)ASCII編碼;高128個(gè)碼字根據(jù)語言不同,采用“碼頁”處理方式。如,IBM字符集碼頁為437;如,以色列碼頁是862;Windows國際版有很多這樣的碼頁,涵蓋了各種語言。5.2.1英文字符編碼【擴(kuò)展】ANSI擴(kuò)展ASCII碼。5.2.1英文字符編碼【擴(kuò)展】字符集與編碼之間的關(guān)系。5.2.1英文字符編碼【擴(kuò)展】莫爾斯電報(bào)碼(MorseCode)。5.2.1英文字符編碼【擴(kuò)展】布萊葉盲文編碼(BrailleCode)?!队?jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.2.3統(tǒng)一字符編碼5.2.4聲音數(shù)字化處理5.2.5圖像數(shù)字化處理5.2.1英文字符編碼5.2.2漢字字符編碼5.2.2漢字字符編碼1、雙字節(jié)字符集(DBCS)亞洲國家常用文字符號(hào)大約2萬多個(gè)。8位編碼不能滿足需要,解決方案是采用DBCS(雙字節(jié)字符集)編碼。DBCS用2個(gè)字節(jié)定義1個(gè)字符,當(dāng)2個(gè)字節(jié)編碼值低于128時(shí)為ASCII碼,編碼值高于128時(shí),為所在國家定義的編碼?!纠?-41】漢字早期采用雙字節(jié)編碼,字節(jié)最高位為0表示標(biāo)準(zhǔn)ASCII碼;字節(jié)最高位為1時(shí),用2個(gè)字節(jié)表示一個(gè)漢字。即有的字符用1個(gè)字節(jié)表示(如英文),有的字符用2個(gè)字節(jié)表示(如漢字)。5.2.2漢字字符編碼雙字節(jié)編碼換存在以下問題:(1)程序中處理字符串時(shí),指針移動(dòng)可能會(huì)導(dǎo)致錯(cuò)誤;(2)字符串存儲(chǔ)時(shí),需要計(jì)算字符串的長度;(3)丟失雙字節(jié)字符的高位字節(jié)后,會(huì)產(chǎn)生“亂碼”現(xiàn)象;(4)在存儲(chǔ)和傳輸中,是高字節(jié)在前,還是低字節(jié)在前?5.2.2漢字字符編碼2、漢字編碼(1)GB2312-80字符集漢字編碼1981年,《信息交換用漢字編碼字符集·基本集》(GB2312-80)標(biāo)準(zhǔn)頒布。GB2312-80標(biāo)準(zhǔn)規(guī)定:1個(gè)漢字用2個(gè)字節(jié)表示;每個(gè)字節(jié)只使用低7位,最高位為0;共收錄6763個(gè)簡體漢字、682個(gè)符號(hào);一級(jí)漢字3755個(gè),以拼音排序;二級(jí)漢字3008個(gè),以偏旁排序?!纠?-42】“啊”字的國標(biāo)碼為:001100000010000130H21H5.2.2漢字字符編碼【案例】GB2312-80字符集和區(qū)位碼、國標(biāo)碼、內(nèi)碼。符號(hào)區(qū)一級(jí)字庫二級(jí)字庫編碼5.2.2漢字字符編碼(2)內(nèi)碼國標(biāo)碼最高位為0,與ASCII碼無法區(qū)分;因此,早期計(jì)算機(jī)內(nèi)部,漢字編碼全部采用內(nèi)碼表示。早期內(nèi)碼是將國標(biāo)碼兩個(gè)字節(jié)的最高位設(shè)定為1,保持中英文的兼容性。【例5-43】“啊”字的內(nèi)碼為:操作系統(tǒng)內(nèi)部編碼,早期DOS系統(tǒng)采用ASCII碼;目前操作系統(tǒng)內(nèi)部基本都采用Unicode字符集編碼,字節(jié)高位0、1兼有。1011000010100001B0HA1H5.2.2漢字字符編碼(3)編碼轉(zhuǎn)換部分編程語言提供了編碼轉(zhuǎn)換函數(shù)?!纠?-44】用PHP語言編碼轉(zhuǎn)換函數(shù),求字符串“中國”的GB2312-80內(nèi)碼。<?phpechourlencode("中國");
//輸出編碼為:%D6%D0%B9%FA,%為分隔符//?>(4)BIG5字符集漢字編碼臺(tái)灣、香港地區(qū)普遍使用BIG5繁體漢字編碼標(biāo)準(zhǔn);BIG5包括440個(gè)符號(hào),13060個(gè)漢字。5.2.2漢字字符編碼3、字形編碼ASCII、GB2312-80等解決了信息的存儲(chǔ),傳輸,計(jì)算、處理等問題;字符的顯示和打印輸出時(shí),需要另外對(duì)字形編碼。、通常,將所有字形編碼的集合稱為字庫。計(jì)算機(jī)中有幾十種中英文字庫。字形編碼有點(diǎn)陣字形和矢量字形兩種類型。漢字輸入鍵盤輸入漢字信息
(輸入碼)機(jī)內(nèi)碼字形碼顯示/打印輸出漢字輸出國標(biāo)碼5.2.2漢字字符編碼(1)點(diǎn)陣字形編碼點(diǎn)陣字形是將每個(gè)字符分成16×16(或其他分辨率)的點(diǎn)陣圖像,然后用圖像點(diǎn)的有無(一般為黑白)表示字形的輪廓。缺點(diǎn):不能放大,放大后字符邊緣會(huì)出現(xiàn)鋸齒現(xiàn)象。5.2.2漢字字符編碼(2)矢量字形編碼矢量字形保存每個(gè)字符的數(shù)學(xué)描述信息。如,筆劃的起始、終止坐標(biāo),半徑、弧度等。顯示和打印矢量字形時(shí),要經(jīng)過一系列的運(yùn)算才能輸出結(jié)果。矢量字形可以無限放大,筆劃輪廓仍然保持圓滑。Windows中絕大部分為矢量字形,只有很小的字符采用點(diǎn)陣字形?!纠?-46】Windows中,矢量字符由數(shù)學(xué)方程和參數(shù)點(diǎn)組成。5.2.2漢字字符編碼【擴(kuò)展】矢量字形。矢量字形=計(jì)算公式+字形參數(shù)計(jì)算公式:描述函數(shù)、直線方程、B樣條(Bezier曲線)擬合公式等字形參數(shù):基點(diǎn)、基線、錨點(diǎn)、控制點(diǎn)、寬度、角度、顏色等矢量字符顯示:查找字符取出參數(shù)計(jì)算字形顯示字符3次B樣條曲線2次B樣條曲線1次B樣條曲線5.2.2漢字字符編碼(3)TrueType矢量字形TrueType是Apple和Microsoft公司提出的字形技術(shù)。TT是用函數(shù)描述字體輪廓外形的指令集合。TT指令包括:字型構(gòu)造,顏色填充,描述函數(shù),條件控制,提示信息,控制指令等。TT采用二次B樣條曲線和直線方程描述字形外部輪廓。Windows矢量字庫保存在C:\Windows\fonts目錄下;如,文件擴(kuò)展名為FON,表示是點(diǎn)陣字庫;如,文件擴(kuò)展名為TTF,表示是矢量字庫。各種矢量字庫5.2.2漢字字符編碼Windows中矢量字形與點(diǎn)陣字形的顯示效果如圖5-28所示?!队?jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.2.3統(tǒng)一字符編碼5.2.4聲音數(shù)字化處理5.2.5圖像數(shù)字化處理5.2.1英文字符編碼5.2.2漢字字符編碼5.2.3統(tǒng)一字符編碼1、國際通用字符集(1)Unicode(統(tǒng)一碼)字符集Unicode是一種國際通用字符編碼標(biāo)準(zhǔn)。Unicode目標(biāo):收錄世界上所有語言的文字和符號(hào);對(duì)每個(gè)字符定義一個(gè)值(碼點(diǎn));碼點(diǎn)可用2字節(jié)表示(UCS-2),也可用4字節(jié)表示(UCS-4)。Unicode字符名稱=代碼點(diǎn)值前面加上“U+”。如,字符“A”的名稱是“U+0041”。Unicode和UCS獲得了網(wǎng)絡(luò)、操作系統(tǒng)、編程語言等廣泛支持。如,WindowsNT/2000/XP/7/8、Linux等。5.2.3統(tǒng)一字符編碼【擴(kuò)展】字符集編碼圖。5.2.3統(tǒng)一字符編碼(2)UCS-2(通用字符集)UCS-2是ISO(國際標(biāo)準(zhǔn)化組織)和Unicode共同定義的國際通用字符集。UCS-2代碼長度固定為2個(gè)字節(jié)(16位)。英文符號(hào)在ACSII碼前面加一個(gè)代碼點(diǎn)為0的字節(jié)。如,“A”的ASCII碼為41H,它的UCS-2代碼點(diǎn)為U+0041H。UCS-2優(yōu)點(diǎn):亞洲字符的存儲(chǔ)空間比UTF-8編碼少;處理字符的速度比UTF-8編碼快,因?yàn)榫幋a長度是固定的;對(duì)Windows和Java的支持更好。Windows2000/XP/7/8在系統(tǒng)內(nèi)部使用UCS-2字符集,必要時(shí)轉(zhuǎn)換為ASCII碼。5.2.3統(tǒng)一字符編碼2、Unicode字符的存儲(chǔ)和傳輸問題(1)“大端”與“小端”字節(jié)序在《格列佛游記》中,小人國的內(nèi)戰(zhàn)源于吃雞蛋時(shí)是究竟從大端敲開還是從小端敲開,由此曾發(fā)生過六次叛亂,其中一個(gè)皇帝送了命,另一個(gè)丟了王位。5.2.3統(tǒng)一字符編碼字符編碼在存儲(chǔ)和傳輸中,同樣遇到了“大端”與“小端”的問題。如,“漢”字Unicode編碼是U+6C49,寫入文件時(shí),將“6C”存儲(chǔ)在起始地址就是大端字節(jié)序(BE,起始地址存高位字節(jié));將“49”存儲(chǔ)在起始地址就是小端字節(jié)序(LE,起始地址存低位字節(jié))。x86計(jì)算機(jī)中,數(shù)據(jù)存儲(chǔ)和傳輸采用“小端”字節(jié)序;TCP/IP協(xié)議、Java語言、蘋果計(jì)
算機(jī)采用“大端”字節(jié)序。起始地址低位字節(jié)高位地址5.2.3統(tǒng)一字符編碼【擴(kuò)展】網(wǎng)絡(luò)字節(jié)序。TCP/IP網(wǎng)絡(luò)協(xié)議中,所有二進(jìn)制整數(shù)在網(wǎng)絡(luò)傳輸中采用“大端字節(jié)序”,因此又稱為“網(wǎng)絡(luò)字節(jié)序”。【例】4個(gè)字節(jié)的32bit值(0x12345678),在網(wǎng)絡(luò)中的傳輸次序是:首先0~7bit,其次8~15bit,然后16~23bit,最后24~31bit。這種傳輸次序稱為“網(wǎng)絡(luò)字節(jié)序”(大端字節(jié)序)。如果程序只在單機(jī)環(huán)境下運(yùn)行,并且不和其他程序打交道,那么可以忽略字節(jié)序的存在。唯有在跨平臺(tái)以及網(wǎng)絡(luò)程序設(shè)計(jì)中,才考慮字節(jié)序問題。123456785.2.3統(tǒng)一字符編碼【例5-47】字符串“Hello”在Unicode編碼中;大端字節(jié)序是:U+0048U+0065U+006CU+006CU+006F小端字節(jié)序?yàn)椋篣+4800U+6500U+6C00U+6C00U+6F00小端字節(jié)序5.2.3統(tǒng)一字符編碼(2)UBOM存儲(chǔ)模式計(jì)算機(jī)在不清楚“大端”或“小端”的情況下,如何進(jìn)行數(shù)據(jù)解析呢?解決辦法:在每個(gè)Unicode字符串的最前面;用“FEFF”表示大端字節(jié)序(BE);用“FFFE”表示小端字節(jié)序(LE);“FEFF”是不存在的字符編碼,不會(huì)出現(xiàn)編碼沖突問題。5.2.3統(tǒng)一字符編碼3、UTF-16編碼
(1)UTF-16編碼方法
UTF-16編碼的前身是UCS2編碼。UCS-2編碼固定2個(gè)字節(jié)表示一個(gè)字符,一共可表示216=65535個(gè)字符。Unicode4.0標(biāo)準(zhǔn)定義了一組附加字符編碼,附加字符用4個(gè)字節(jié)表示,Unicode4.0定義了45960個(gè)附加字符。UTF-16編碼=UCS-2字符集+附加字符UTF-16編碼可用2個(gè)字節(jié)表示,也可用4個(gè)字節(jié)表示。目前UTF-16的碼點(diǎn)范圍是:U+0000~U+10FFFF,大概有111萬編碼。UTF-16編碼主要用于Windows2000/XP/7/8操作系統(tǒng)。5.2.3統(tǒng)一字符編碼(2)UTF-16編碼案例例如,“中國”字符的各個(gè)版本UTF-16編碼如表5-8所示。編碼標(biāo)準(zhǔn)“中國”字符的編碼序列說明UTF-16BE4E2D56FD大端字節(jié)序編碼UTF-16LE2D4EFD56小端字節(jié)序編碼UTF-16(BOM,BE)FEFF4E2D56FD字節(jié)序標(biāo)示符+大端編碼UTF-16(BOM,LE)FFFE2D4EFD56字節(jié)序標(biāo)示符+小端編碼5.2.3統(tǒng)一字符編碼【擴(kuò)展】字符的Unicode編碼。5.2.3統(tǒng)一字符編碼【擴(kuò)展】Unicode編碼圖5.2.3統(tǒng)一字符編碼4、UTF-8編碼(1)UCS-2編碼對(duì)存儲(chǔ)空間的浪費(fèi)UCS-2編碼需要在ACSII碼前加一個(gè)0字節(jié)碼;這樣,英文系統(tǒng)就會(huì)出現(xiàn)大量為0的字節(jié)。美國程序員無法忍受這種存儲(chǔ)空間翻倍;傳輸時(shí)間翻倍的浪費(fèi);這些程序員選擇忽略Unicode字符集,這讓事情變得更加糟糕。解決的方法是采用UTF-8編碼。容量與效率的矛盾:編碼時(shí)用幾個(gè)字節(jié)表示一個(gè)字符,用的字節(jié)越多,編碼空間越大,即容量越大。表示一個(gè)字符用的字節(jié)越多,存儲(chǔ)空間就越大,存儲(chǔ)或檢索的效率降低了。平衡這一對(duì)矛盾的方法是采用變長編碼方案,因此編碼也由簡單變得復(fù)雜了。5.2.3統(tǒng)一字符編碼【擴(kuò)展】CAP理論及擴(kuò)展。著名的布魯爾(Brewer)猜想指出:對(duì)于分布式系統(tǒng),數(shù)據(jù)一致性(Consistency)、系統(tǒng)可用性(Availability)、分區(qū)容錯(cuò)性(Partitioning)三個(gè)目標(biāo)(合稱CAP)不可能同時(shí)滿足,最多只能滿足其中兩個(gè)。CAP理論啟示:(1)事物的多個(gè)方面往往是相互制衡的。在復(fù)雜系統(tǒng)中,沖突是不可避免的。(2)凡事有代價(jià),常常需要在各方面達(dá)成某種妥協(xié)與平衡。例如,分層會(huì)對(duì)性能有所損害,但不分層又會(huì)帶來系統(tǒng)過于復(fù)雜的問題。很多時(shí)候,結(jié)構(gòu)就是平衡的藝術(shù)。明白這一點(diǎn),就不會(huì)為無法找到完美方案而苦惱。(3)復(fù)雜性是由需求所決定的。既要求容量大,又要求效率高,這種需求本身就不簡單,因此也無法簡單地解決。5.2.3統(tǒng)一字符編碼(2)UTF-8編碼方法UTF-8設(shè)計(jì)思想:
不修改那些沒有壞或不夠好的東西,只修改出問題的部分。UTF-8編碼方法:0~127之間的碼字使用1個(gè)字節(jié)存儲(chǔ);超過128的碼字使用2~4個(gè)字節(jié)存儲(chǔ)。UTF-8編碼的長度是可變的。ASCII碼與UTF-8碼完全一致,解決了美國程序員的煩惱?!纠?-48】字符“中”的編碼。UTF-8碼占3個(gè)字節(jié),編碼為“E4B8AD”;UTF-16編碼為“4E2D”,2個(gè)字節(jié);GBK編碼為“D6D0”,2個(gè)字節(jié)。5.2.3統(tǒng)一字符編碼(3)UTF-8編碼的優(yōu)點(diǎn)對(duì)歐洲字符只要較少的存儲(chǔ)空間;兼容ASCII碼,容易從ASCII碼向UTF-8遷移;與字節(jié)順序無關(guān),可以在不同平臺(tái)之間交流;容錯(cuò)能力高,不會(huì)產(chǎn)生連鎖錯(cuò)誤(如亂碼)。類UNIX系統(tǒng)普遍采用UTF-8字符集;如,Linux系統(tǒng)默認(rèn)的字符編碼是UTF-8;如,HTML和大多數(shù)瀏覽器也支持UTF-8。5.2.3統(tǒng)一字符編碼【擴(kuò)展】各種不同語言文字中,字符“你好”的編碼。語言文種編碼標(biāo)準(zhǔn)字符集大小文字樣例簡體中文GB2312-806763你好、中國漢語繁體中文BIG-513053你好、中國漢語藏文Unicode592(扎西德勒)日文SJIS6524こんにちは(空寧尼其哇)韓文KSC56017238?????(啊寧哈塞優(yōu))英文ASCII128Howareyou俄文Windows1251256Привет(的比哦捏特)阿拉伯文Unicode193???????????(埃瑟蘭姆-啊累依庫姆)《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.2.3統(tǒng)一字符編碼5.2.4聲音數(shù)字化處理5.2.5圖像數(shù)字化處理5.2.1英文字符編碼5.2.2漢字字符編碼5.2.4聲音數(shù)字化處理聲音、圖形、視頻等信息,需要轉(zhuǎn)換成二進(jìn)制數(shù)后計(jì)算機(jī)才能存儲(chǔ)和處理。將模擬信號(hào)轉(zhuǎn)換成二進(jìn)制數(shù)的過程稱為數(shù)字化處理。1、聲音的數(shù)字化過程自然聲音是連續(xù)變化的模擬量。如,對(duì)著話筒講話時(shí),話筒根據(jù)周圍空氣壓力的變化,輸出連續(xù)變化的電壓值。模擬音頻信號(hào)地?cái)?shù)字化過程如圖5-30所示。5.2.4聲音數(shù)字化處理【擴(kuò)展】故障聲音的頻率。次聲波人耳可聽域超聲波<20Hz20~20,000Hz>20,000Hz女性語音150Hz~9,000Hz電話語音200Hz~3,400Hz調(diào)幅廣播(AM)50Hz~7,000Hz調(diào)頻廣播(FM)20Hz~15,000Hz高級(jí)音響10Hz~40,000Hz男性語音100Hz~8,000Hz聲源種類頻帶寬度5.2.4聲音數(shù)字化處理(1)采樣模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)必須經(jīng)過采樣過程。采樣:在固定時(shí)間間隔內(nèi),對(duì)模擬音頻信號(hào)截取振幅值。單位時(shí)間內(nèi)采樣次數(shù)(采樣頻率)越多,數(shù)字信號(hào)就越接近原聲。奈奎斯特采樣定理:
采樣頻率達(dá)到信號(hào)最高頻率的2倍時(shí),可以無失真地恢復(fù)原信號(hào)。人耳聽力范圍在20Hz~20kHz之間。采樣頻率達(dá)到:20kHz×2=40kHz,就可以滿足采樣要求。目前聲卡采樣頻率達(dá)到了44.1kHz或更高。5.2.4聲音數(shù)字化處理【案例】音頻信號(hào)的采樣與量化處理。采樣頻率5.2.4聲音數(shù)字化處理(2)量化量化:將信號(hào)連續(xù)取值為有限多個(gè)離散值。量化精度一般用二進(jìn)制數(shù)衡量。如聲卡量化位數(shù)為16位,有216=65535種量化等級(jí)。聲卡大多為24位或32位量化精度。(3)編碼將采集的原始數(shù)據(jù),按文件類型(如WAV、MP3等)編碼;再加上音頻文件的頭部,就得到了一個(gè)數(shù)字音頻文件。編碼工作由聲卡和音頻處理軟件(如AdobeAudition)共同完成。5.2.4聲音數(shù)字化處理【擴(kuò)展】模擬電視信號(hào)的數(shù)字化。5.2.4聲音數(shù)字化處理2、聲音信號(hào)的輸入與輸出數(shù)字音頻信號(hào)可通過網(wǎng)絡(luò)、光盤、數(shù)字話筒、MIDI接口等輸入計(jì)算機(jī)。模擬音頻信號(hào)輸入計(jì)算機(jī)后,由聲卡轉(zhuǎn)換為數(shù)字信號(hào);這一過程稱為“模/數(shù)轉(zhuǎn)換”(A/D)。播放音頻
播放軟件
音頻解壓縮
音頻芯片
,
模擬音頻信號(hào)這一過程稱為“數(shù)/模轉(zhuǎn)換”(D/A)。5.2.4聲音數(shù)字化處理【擴(kuò)展】個(gè)人音樂工作站。5.2.4聲音數(shù)字化處理【擴(kuò)展】個(gè)人音樂工作室組成。《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.2.3統(tǒng)一字符編碼5.2.4聲音數(shù)字化處理5.2.5圖像數(shù)字化處理5.2.1英文字符編碼5.2.2漢字字符編碼5.2.5圖像數(shù)字化處理1、圖像的數(shù)字化數(shù)字圖像(Image)可由數(shù)碼相機(jī)、數(shù)碼攝像機(jī)、掃描儀等設(shè)備獲取。數(shù)字圖像也可以直接在計(jì)算機(jī)中自動(dòng)或人工設(shè)計(jì)生成。5.2.5圖像數(shù)字化處理2、圖像的編碼(1)二值圖編碼二值圖:只有黑、白兩色的圖。圖像離散化:設(shè)置取樣分辨率(采樣);對(duì)圖像中每個(gè)像素用1位二進(jìn)數(shù)表示。圖像分辨率(采樣精度)指單位長度內(nèi)包含像素點(diǎn)的數(shù)量;分辨率單位:dpi(點(diǎn)/英寸)等。圖像分辨率越高,圖像質(zhì)量越好,文件占用存儲(chǔ)空間越大。5.2.5圖像數(shù)字化處理【擴(kuò)展】圖像像素與尺寸5.2.5圖像數(shù)字化處理(2)灰度圖像的編碼灰度圖將白色與黑色之間的過度灰色按對(duì)數(shù)關(guān)系分為若干亮度等級(jí)。一般亮度分為0~255個(gè)等級(jí)(量化精度);人眼對(duì)圖像亮度的識(shí)別小于64個(gè)等級(jí)。圖像中每個(gè)像素點(diǎn)的亮度值用1個(gè)字節(jié)表示。5.2.5圖像數(shù)字化處理(3)彩色圖像的編碼顯示器的任何色彩都可以用紅綠藍(lán)(RGB)三個(gè)基色按不同比例混合得到。5.2.5圖像數(shù)字化處理圖像中每個(gè)像素點(diǎn)用3個(gè)字節(jié)進(jìn)行編碼。每個(gè)顏色用1個(gè)字節(jié)表示,亮度范圍為0~255個(gè)等級(jí)。一個(gè)像素點(diǎn)的色彩范圍為:224=1670萬種色彩。像素點(diǎn)用多少位二進(jìn)制數(shù)表示,稱為色彩深度(量化精度)。5.2.5圖像數(shù)字化處理【案例】彩色圖像的RGB模式。RGB彩色圖像R
G
BRG
BR數(shù)組—8bit表示(256級(jí)色階)G數(shù)組—8bit表示(256級(jí)色階)B數(shù)組—8bit表示(256級(jí)色階)最大色彩數(shù):28×28×28=224=16777216(16.7M)5.2.5圖像數(shù)字化處理3、點(diǎn)陣圖像的特點(diǎn)點(diǎn)陣圖像由多個(gè)像素點(diǎn)組成。點(diǎn)陣圖像放大時(shí),像素點(diǎn)會(huì)使線條和形狀顯得參差不齊。5.2.5圖像數(shù)字化處理4、矢量圖形的編碼矢量圖形(Graphic)用直線或曲線描述圖形。矢量圖形采用特征點(diǎn)和計(jì)算公式對(duì)圖形進(jìn)行表示和存儲(chǔ)。顯示或打印矢量圖形時(shí),要經(jīng)過一系列的數(shù)學(xué)運(yùn)算才能輸出圖形。矢量圖形的的優(yōu)點(diǎn)是無論進(jìn)行放大、縮小或旋轉(zhuǎn)等操作,圖形都不會(huì)失真。矢量圖形可以只修改其中某一個(gè)物體,而不會(huì)影響圖中其他物體。5.2.5圖像數(shù)字化處理【擴(kuò)展】圖形的點(diǎn)陣表達(dá)和矢量表達(dá)形式。5.2.5圖像數(shù)字化處理【案例】矢量圖形和點(diǎn)陣圖形放大時(shí)的對(duì)比。5.2.5圖像數(shù)字化處理矢量圖形缺點(diǎn):難以表現(xiàn)色彩層次豐富的圖像效果;無法使用廉價(jià)設(shè)備將圖形輸入到計(jì)算機(jī)中并矢量化;目前沒有統(tǒng)一的標(biāo)準(zhǔn)格式;在不同軟件中進(jìn)行交換困難。主要應(yīng)用:線框型圖片,工程制圖,二維動(dòng)畫設(shè)計(jì),三維物體造型等。矢量圖形軟件:如,Visio、AutoCAD、FlashCS、3DMAX等。矢量圖形可以轉(zhuǎn)換為點(diǎn)陣圖像;點(diǎn)陣圖像轉(zhuǎn)換為矢量圖形時(shí)效果很差。5.2.5圖像數(shù)字化處理【案例】分形矢量圖形。5.2.5圖像數(shù)字化處理【案例】Visio矢量圖形。5.2.5圖像數(shù)字化處理【案例】AutoCAD矢量圖形。5.2.5圖像數(shù)字化處理【案例】3DMAX矢量圖形。《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.3.3邏輯命題演算5.3.4邏輯運(yùn)算應(yīng)用5.3.1基本邏輯運(yùn)算5.3.2數(shù)理邏輯命題5.3.1基本邏輯運(yùn)算1、邏輯運(yùn)算的特點(diǎn)邏輯變量和邏輯值只有“0”和“1”;它們不表示數(shù)值的大小,只表示事物的性質(zhì)或狀態(tài)。如,命題判斷中的“真”與“假”;如,程序流程圖中的“是”與“否”‘如,數(shù)字電路中的“低電平”與“高電平”等?;具壿嬤\(yùn)算:與運(yùn)算(AND)或運(yùn)算(OR)非運(yùn)算(NOT)通過基本邏輯運(yùn)算,可組合出任何其他邏輯關(guān)系。5.3.1基本邏輯運(yùn)算2、與運(yùn)算(AND)與運(yùn)算是邏輯乘法運(yùn)算;邏輯表達(dá)式:Y=A?B運(yùn)算規(guī)律:全1為1,否則為0(真真得真)?!纠?-52】10011100AND00111001=00011000
10011100×00111001
000110005.3.1基本邏輯運(yùn)算邏輯運(yùn)算規(guī)則:(1)逐位按規(guī)則運(yùn)算;(2)不同位之間沒有任何關(guān)系,不存在進(jìn)位或借位;(3)不存在溢出問題;(4)沒有符號(hào)問題,邏輯值以原碼形式表示和存儲(chǔ)。布爾代數(shù)特別適合邏輯電路設(shè)計(jì)。5.3.1基本邏輯運(yùn)算3、或運(yùn)算(OR)或運(yùn)算是邏輯加法運(yùn)算;邏輯表達(dá)式:Y=A+B運(yùn)算規(guī)律:全0為0,否則為1(假假得假)?!纠?-53】10011100OR00111001=10111101
10011100+00111001
101111015.3.1基本邏輯運(yùn)算4、非運(yùn)算(NOT)非運(yùn)算是邏輯取反運(yùn)算;邏輯表達(dá)式:
運(yùn)算規(guī)律:邏輯值取反?!纠?-54】NOT(10011100)=01100011
┐10011100
011000115.3.1基本邏輯運(yùn)算5、異或運(yùn)算(XOR)異或運(yùn)算用符號(hào)“⊕”表示;運(yùn)算規(guī)則:相同為0,相異為1(同假異真)?!队?jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.3.3邏輯命題演算5.3.4邏輯運(yùn)算應(yīng)用5.3.1基本邏輯運(yùn)算5.3.2數(shù)理邏輯命題5.3.2數(shù)理邏輯命題1、數(shù)理邏輯的發(fā)展數(shù)理邏輯研究內(nèi)容:古典數(shù)理邏輯(命題邏輯,謂詞邏輯);現(xiàn)代數(shù)理邏輯(公理集合論、證明論、模型論、遞歸論等)。數(shù)理邏輯是現(xiàn)代計(jì)算機(jī)技術(shù)的基礎(chǔ)理論??吕?霍華德同構(gòu)理論:對(duì)一個(gè)函數(shù)計(jì)算結(jié)果的斷言可類比于一個(gè)邏輯定理,計(jì)算這個(gè)值的程序可類比于這個(gè)定理的證明??吕?霍華德同構(gòu)經(jīng)常表述為“證明即程序”。5.3.2數(shù)理邏輯命題2、數(shù)理邏輯中的命題推理過程必須依靠命題表達(dá);命題是能判斷真假的陳述句。命題的結(jié)論:為真或?yàn)榧??!纠?-55】下列陳述句都是命題。8小于10。8大于10。一個(gè)自然數(shù)不是合數(shù)就是素?cái)?shù)。明年10月1日是晴天。公元1100年元旦下雨。/*命題真值為真*//*假命題也是命題,是真值為假的命題*//*命題真值為假,1不是合數(shù)和素?cái)?shù)*//*真值目前不知道,但真值是確定的*//*可能無法查明真值,但真值是確定的*/5.3.2數(shù)理邏輯命題【例5-56】下列句子不是命題。8大于10嗎?天空多漂亮!禁止喧嘩。X>Y。X=Y+5。我在說謊。/*疑問句不是命題*//*感嘆句不是命題*//*命令句不是命題*//*命題真值不能確定*//*方程不是命題*//*悖論不是命題*/《計(jì)算機(jī)導(dǎo)論——計(jì)算思維和應(yīng)用技術(shù)》計(jì)算機(jī)第5章
信息編碼5.1數(shù)值信息編碼5.2字符信息編碼5.3邏輯運(yùn)算與應(yīng)用5.4壓縮與糾錯(cuò)編碼5.3.3邏輯命題演算5.3.4邏輯運(yùn)算應(yīng)用5.3.1基本邏輯運(yùn)算5.3.2數(shù)理邏輯命題5.3.3邏輯命題演算1、邏輯聯(lián)結(jié)詞命題演算是通過邏輯聯(lián)結(jié)詞,構(gòu)成更復(fù)雜的命題。邏輯連接詞類似運(yùn)算符號(hào);通過邏輯聯(lián)結(jié)詞,可以由簡單命題組成復(fù)合命題。命題用符號(hào)表示稱為命題符號(hào)化。5.3.3邏輯命題演算邏輯聯(lián)結(jié)詞與含義邏輯聯(lián)結(jié)詞表示命題的推理規(guī)則聯(lián)結(jié)詞說明命題案例命題讀法命題含義┐非┐P非PP的否定(邏輯取反)∧與P∧QP并且QP和Q的合?。ㄟ壿嫵耍呕騊∨QP或者QP和Q的析取(邏輯加)如果…,則…..PQ若P則QP蘊(yùn)含Q(單向條件)當(dāng)且僅當(dāng)PQP當(dāng)且僅當(dāng)QP等價(jià)Q(雙向條件)命題的前件與后件不同邏輯命題運(yùn)算的真值PQP∧QP∨QPQPQ0000110101101001001111115.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子、通信產(chǎn)品及軟件批發(fā)服務(wù)合作協(xié)議書
- 銅材及銅錠批發(fā)企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 醫(yī)用消毒、滅菌設(shè)備和器具批發(fā)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 發(fā)光地毯企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 中草藥批發(fā)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 炊事用具附件百貨企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 掃描儀批發(fā)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 鉛筆盒超市企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 保證保險(xiǎn)企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 2025年農(nóng)產(chǎn)品加工專用設(shè)備合作協(xié)議書
- 能斷金剛:超凡的經(jīng)營智慧
- 磷脂酶與脂質(zhì)代謝
- 上海市奉賢區(qū)2022年中考二模英語試題(含解析和聽力)
- 數(shù)字的秘密生活最有趣的50個(gè)數(shù)學(xué)故事
- 養(yǎng)老機(jī)構(gòu)安全隱患排查清單、自查表、治理整改臺(tái)賬
- 5.1 數(shù)據(jù)安全概述
- led燈具生產(chǎn)工藝過程流程圖
- 財(cái)務(wù)分析模板(43張)課件
- 城市供水管網(wǎng)供水管網(wǎng)檢漏技術(shù)及儀器設(shè)備應(yīng)用課件
- 第三方工程評(píng)估體系檢查表
- 唐僧團(tuán)隊(duì)之如何打造團(tuán)隊(duì)
評(píng)論
0/150
提交評(píng)論