一、機器數的碼長爲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+餘數。