請參考我先前的回答,如下 CRC-16碼由兩個位元組構成,在開始時CRC暫存器的每一位都預置為1,然後把CRC暫存器與8-bit的資料進行異或(異或:二進位制運算相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0),之後對CRC暫存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位後已經被移出CRC暫存器)如果為1,則把暫存器與預定義的多項式碼進行異或,否則如果LSB為零,則無需進行異或。重複上述的由高至低的移位8次,第一個8-bit資料處理完畢,用此時CRC暫存器的值與下一個8-bit資料異或並進行如前一個數據似的8次移位。所有的字元處理完成後CRC暫存器內的值即為最終的CRC值。 1.設定CRC暫存器,並給其賦值FFFF(hex)。 2.將資料的第一個8-bit字元與16位CRC暫存器的低8位進行異或,並把結果存入CRC暫存器。3.CRC暫存器向右移一位,MSB補零,移出並檢查LSB。 4.如果LSB為0,重複第三步;若LSB為1,CRC暫存器與多項式碼相異或。 5.重複第3與第4步直到8次移位全部完成。此時一個8-bit資料處理完畢。 6.重複第2至第5步直到所有資料全部處理完成。 7.最終CRC暫存器的內容即為CRC值。 CRC(16位)多項式為X16+X15+X2+1,其對應校驗二進位制位列為11000000000000101。
請參考我先前的回答,如下 CRC-16碼由兩個位元組構成,在開始時CRC暫存器的每一位都預置為1,然後把CRC暫存器與8-bit的資料進行異或(異或:二進位制運算相同為0,不同為1;0^0=0;0^1=1;1^0=1;1^1=0),之後對CRC暫存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位後已經被移出CRC暫存器)如果為1,則把暫存器與預定義的多項式碼進行異或,否則如果LSB為零,則無需進行異或。重複上述的由高至低的移位8次,第一個8-bit資料處理完畢,用此時CRC暫存器的值與下一個8-bit資料異或並進行如前一個數據似的8次移位。所有的字元處理完成後CRC暫存器內的值即為最終的CRC值。 1.設定CRC暫存器,並給其賦值FFFF(hex)。 2.將資料的第一個8-bit字元與16位CRC暫存器的低8位進行異或,並把結果存入CRC暫存器。3.CRC暫存器向右移一位,MSB補零,移出並檢查LSB。 4.如果LSB為0,重複第三步;若LSB為1,CRC暫存器與多項式碼相異或。 5.重複第3與第4步直到8次移位全部完成。此時一個8-bit資料處理完畢。 6.重複第2至第5步直到所有資料全部處理完成。 7.最終CRC暫存器的內容即為CRC值。 CRC(16位)多項式為X16+X15+X2+1,其對應校驗二進位制位列為11000000000000101。