CRC CRC推導(三)位元組查表與半位元組查表

2021-10-05 15:12:54 字數 1173 閱讀 5557

上節我們講到模二除法,模二除法的操作是按位進行,每次移動一位,然後計算,演算法要套2個迴圈,效率較低。

由於異或運算有交換律和結合律。因此,我們再次看一下範例:

傳送資料為0xcf16(1100111100010110b),多項式為0x11021(10001000000100001b)為例,結果如下:

我們省略一些過程,將4次計算合併成一次。

我們先計算藍色部分,再將藍色部分結果與藍綠部分異或,得到的結果就是褐色部分。

藍色部分是0還是多項式與被除數高4bit有關,其目的是為了消除被除數的高4bit,因此藍色部分計算出來的值要與被除數高4bit一樣。高4bit可以是從0000-1111有對應16種情況,因此我們可以得出乙個以高4bit為索引的table,table內容是低16位的異或後的值。

每次取高4bit為索引,獲取到低16位的異或值,然後與原值低16位異或即可得到餘數(上上張圖的褐色部分)。

將8次計算合併成一次,方法與上面的類似。

我們先計算藍色部分,再將藍色部分結果與藍綠部分異或,得到的結果就是褐色部分

藍色部分是0還是多項式與被除數高8bit有關,其目的是為了消除被除數的高8bit,因此藍色部分計算出來的值要與被除數高8bit一樣。高8bit可以是從00000000-11111111有對應256種情況,因此我們可以得出乙個以高8bit為索引的table,table內容是低16位的異或後的值。

每次取高8bit為索引,獲取到低16位的異或值,然後與原值低16位異或即可得到餘數(上上張圖的褐色部分)。

IO框架(三)位元組緩衝流

目錄bufferedoutputstream bufferedinputstream方法 protected byte buf 儲存資料的內部緩衝區陣列。protected int count 索引一大於緩衝區中最後乙個有效位元組的索引。protected int marklimit mark方法呼...

51微控制器彙編三位元組加法

乙個加數在片內ram40h 41h 42h單元中,另乙個加數在內ram43h 44h 45h,其和存放在50h 51h 52h單元中,進製位存00h。求編譯程式,小弟謝過 最佳答案 題目太簡單,只有三個位元組參加運算,可不用迴圈結構。mov a,40h add a,43h mov 50h,a mov...

java io詳解三 位元組輸入輸出流

這篇部落格我們講的是位元組輸入輸出流 inputstream outputsteam 下圖紅色長方形框內 紅色橢圓框內是其典型實現 fileinputsteam fileoutstream 1 位元組輸出流 outputstream publicabstractclassoutputstream e...