預習非數值資料的編碼方式

2022-05-28 19:12:09 字數 3480 閱讀 9472

邏輯資料,字元資料,漢字資料,影象資料,聲音資料,等等,不是表示數字的資料都是非數值資料。

ascii編碼:ascii 碼使用指定的7 位或8 位二進位制數組合來表示128 或256 種可能的字元。標準ascii 碼也叫基礎ascii碼,使用7 位二進位制數(剩下的1位二進位制為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字元。

gbk編碼:由於ascii編碼不支援中文,因此,當中國人用到計算機時,就需要尋求一種編碼方式來支援中文。於是,國人就定義了一套編碼規則:當字元小於127位時,與ascii的字元相同,但當兩個大於127的字元連線在一起時,就代表乙個漢字,第乙個位元組稱為高位元組(從0xa1-0xf7),第二個位元組為低位元組(從0xa1-0xfe),這樣大約可以組合7000多個簡體漢字。這個規則叫做gb2312。

unicode編碼:因為世界國家很多,每個國家都定義一套自己的編碼標準,結果相互之間誰也不懂誰的編碼,就無法進行很好的溝通交流,所以及時的出現了乙個組織iso(國際標準化組織)決定定義一套編碼方案來解決所有國家的編碼問題,這個新的編碼方案就叫做unicode。注意unicode不是乙個新的編碼規則,二是一套字符集(為每乙個「字元」分配乙個唯一的 id(學名為碼位 / 碼點 / code point)),可以將unicode理解為一本世界編碼的字典。iso規定:每個字元必須使用倆個位元組,即用16位二進位制來表示所有的字元,對於ascii編碼表裡的字元,保持其編碼不變,只是將長度擴充套件到了16位,其他國家的字元全部統一重新編碼。由於傳輸ascii表裡的字元時,實際上可以只用乙個位元組就可以表示,所以,這種編碼方案在傳輸資料比較浪費頻寬,儲存資料比較浪費硬碟。

utf-8編碼:由於unicode比較浪費網路頻寬和硬碟,因此為了解決這個問題,就在unicode的基礎上,定義了一套編碼規則(將「碼位」轉換為位元組序列的規則(編碼/解碼 可以理解為 加密/解密 的過程)),這個新的編碼規則就是utf-8,採用1-4個字元進行傳輸和儲存資料。

在計算機中有三種常見的校驗碼,分別是:奇偶校驗碼,海明校驗碼,迴圈冗餘碼

這是最簡單的校驗方式,在資訊編碼的時候,將字的最高位作為校驗位。需要說明的事奇偶校驗也有兩種校驗方式:奇校驗和偶校驗。

奇校驗:在最高位新增0或1,使字編碼中的「1」的個數為奇數。

偶校驗:在最高位新增0或1,使字編碼中的「1」的個數為偶數。

海明校驗是一種多重校驗, 將有效資訊按某種規律分成若干組,每組安排乙個校驗位,做奇偶測試,就能提供多位檢錯資訊,以指出最大可能是哪位出錯。假設k個資料位設定r個校驗位,則應滿足:

^r>=k+r+1

校驗位分布2^0,2^1,2^2...2^n位上,如下所示(以4位資料位為例):

校驗的位置為:

由此可以看出,校驗位置的資料分別校驗:

接下來採用異或運算得出具體的r的值:

r1=1,r2=0,r3=0;

再將值分別填入資訊位即可。

奇偶校驗碼作為一種檢錯碼雖然簡單,但是漏檢率太高。在計算機網路和資料通訊中用e得最廣泛的檢錯碼,是一種漏檢率低得多也便於實現的迴圈冗餘碼crc (cyclic redundancy .code),crc碼又稱為多項式碼。

任何乙個由二進位制數字串組成的**,都可以惟一地與乙個只含有0和1兩個係數的多項式建立一一對應的關係。例如,**1010111對應的多項式為x6+x4+x2+x+1,同樣.多項式x5+x3+x2+x+1對應的**為101111。

crc碼在傳送端編碼和接收端校驗時,都可以利用事先約定的生成多項式g(x)來得到。 k位要傳送的資訊位可對應於乙個(k-1)次多項式k(x),r位冗餘位則對應於乙個(r-1)次多項式r(x),由k位資訊位後面加上r位冗餘位組成的 n=k+r位碼字則對應於乙個(n-1)次多項式t(x)=xr·k(x)+r(x)。例如

資訊位:1011001→k(x)=x6+x4+x3+1

冗餘位:1010→r(x)=x3+x

碼字:10110011010→t(x)=x4·k(x)+r(x)

=x10+x8+x7+x4+x3+x

由資訊位產生冗餘位的編碼過程,就是已知k(x)求r(x)的過程。在crc碼中可以通過找到乙個特定的r次多項式g (x)(其最高項xr的係數恒為1),然後用xr·k (x)去除以g(x),得到的余式就是r(x)。特別要強調的是,這些多項式中的"+"都是模2加(也即異或運算);此外,這裡的除法用的也是模2除法, 即除法過程中用到的減法是模2減法,它和模2加法的運算規則一樣,都是異或運算,這是一種不考慮加法進製和減法借位的運算,即

0+o=0,0+1=1,1+0=1,1+1=0

0-0=0,0-1=1,1-0=1,1-1=0

在進行基於模2運算的多項式除法時,只要部分餘數首位為1,便可上商1,否則上商0。然後按模2減法求得餘數,該餘數不計最高位。當被除數逐位除完時,最後得到比除數少一位的餘數。此餘數即為冗餘位,將其新增在資訊位後便構成crc碼字。

仍以上例中k(x)=x6+x4+x3+1為例(即資訊位為1011001),若g(x)=x4+x3+1

(對應**11001),取r=4,則x4·k(x)=x10+x8+x7+x4(對應**為0110010000),其由模2除法求余式r(x)的過程所示如下:

得到的最後餘數為1010,這就是冗餘位,對應r(x)=x3+x。

由於r(x)是xr·k(x)除以g(x)的余式,那麼下列關係式必然滿足

xr·k(x)=g(x)q(x)+r(x)

其中q(x)為商式。根據模二運算規則r(x)+r(x)=0的特點,可將上式改記為

[xr-k(x)+r(x)]/g(x)=q(x)

即    t(x)/g(x)=q(x)

由此可見,通道上傳送的碼字多項式t(x)=xr-k(x)+r(x)。若傳輸過程無錯,則接收方收到的碼字也對應於此多項式,也即接收到的碼字多項式能被g(x)整除。因而接收端的校驗過程就是將接收到的碼字多項式除以g(x)的過程。若余式為零則認為傳輸元差錯;若余式不為零則傳輸有差錯。

例如,前述例子中若碼字10110011010經傳輸後由於受雜訊的干擾,在接收端變成為10110011100,則求余式的除法如下:

求得的余式不為零,相當於在碼字上面半加上了差錯模式00000000110。差錯模式對應的多項式記為e(x),上例中e(x)=x2+x。有差錯時,接收端收到的不再是t(x),而是t(x)與e(x)之模二加,即

[t(x)+e(x)]/g(x)=t(x)/g(x)+e(x)/g(x)

若e(x)/g(x)=0,則這種差錯就能檢測出來;若e(x)/g(x)=0,那麼由於接收到的碼字多項式仍然可被g(x)整除,錯誤就檢測不出來,也即發生了漏檢。

理論上可以證明迴圈冗餘校驗碼的檢錯能力有以下特點:

(1)可檢測出所有奇數字錯。

(2)可檢測出所有雙位元的錯。

(3)可檢測出所有小於、等於校驗位長度的突發錯。

預習非數值資料的編碼方式

1 邏輯值 邏輯資料和數值資料都是一串0 1序列,在形式上無任何差異,需要通過指令的操作碼型別來識別它們。2 字元 字元不能直接在計算機內部進行處理,因而也必須對其進行數位化編碼,字符集中每乙個字元都有乙個 構成了該字符集的 表,簡稱碼表。碼表中的 具有唯一性。用西文字元表示 由拉丁字母,數字,標點...

預習非數值資料的編碼方式

非數值資料的編碼表示 1.邏輯值 n位二進位制數可表示n個邏輯值。邏輯資料只能參加邏輯運算,並且是按位進行的,如按位 與 按位 或 邏輯左移,邏輯右移等。邏輯運算指令處理的是邏輯資料,算術運算指令處理的是數值資料。2.西文字元 西文由拉丁字母,數字,標點符號及一些特殊符號所組成,它們統稱為字元。所有...

預習非數值資料的編碼方式

正常情況下,每個字或其他可定址單位 位元組半字等 是作為乙個整體資料單元看待的。但是,某些時候還需要將乙個,位數掘看成由n個1位資料組成,每個取值為0或1.例如,有時需要儲存乙個布林或二講制資料陣列.陣列中的每項只能取值為1或0 有時可能需要提取乙個資料項中的某位進行諸如 置位 或 清零 等操作。當...