碼的範圍和校驗碼

一、機器數的碼長爲8位,表示補碼時,它所能表示的整數範圍是否爲-128~+127?

        是,因爲當表示源碼時,所能表示的整數範圍是否爲-127~+127,因爲[+0]原碼=0000000,[-0]源碼=10000000,0佔據了兩個編碼,而在表示補碼時[+0]補碼=[-0]補碼=00000000,這樣就多出了一個編碼,而多出去的編碼就是10000000代表-128,但沒有對應得原碼和反碼。下面這張圖能更直觀得表示:

二、校驗碼

(1)奇偶校驗

(2)海明碼校驗

需要先了解下異或運算:

異或運算:相異爲1,相同爲0。它也叫模2和、模2加法,本質上是不帶進位的加法。  
數學符號是 ⊕;  
計算機符號是“xor”;  
C語言中異或符號是^;  
常用的公式是:(a^b)^a=b,即兩個數異或結果在與其中一個數異或得到的是另一個數。  

海明碼校驗:假設用N表示添加了校驗碼位後整個信息的二進制位數,用K代表其中有效信息位數,r表示添加的校驗碼位,它們之間的關係應滿足:N=K+r≤2r-1。

例題:

(3)循環冗餘校驗碼(crc)

因爲在求CRC編碼時,採用的是模2運算。所以我們先了解一下什麼是模2運算

模2運算加減法運算得規則是按位運算,不發生錯位和進位。

例如:1-0=0,0-1=1類似異或運算

 

模2除法得例子:

下面看一個CRC編碼例子

因爲除數110011是6位,根據模2除法規則得到最大的餘數是除數的位數減一位。

最後得到的報文就是原始報文加五個0+餘數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章