>>477
>例えば8BitのCrcで生成多項式が1+X^3+X^7の場合はどのように
俺も詳しくないのでビット数があってない(8bitならX^8が無い)場合に
どうすれば良いか分からんので1+X^3+X^7+X^8として説明するが
(恐らくX^8がなければ7bitのCRCとするべきなのだと思うが…)

生成多項式から次のように変換する
876543210 ← X^n のnに対応する値
110001001 ← 多項式にX^nが含まれていれば1

求めるCRCは8ビットなので、そのビットの値を無視して数値化し p とする
p = 0x91 (10010001) ← 多項式のX^0に対応するビットを最上位とする

CRCの初期値を0とする
CRC = 0

CRCを取りたいデータをnバイトのデータの配列 s とし
次からの一連(字下げ)の処理をn回繰り返す

  CRCの最下位バイトに配列sのnバイト目のデータの値をxorする
  CRC = CRC ^ s[n]

  次からの一連(字下げ)の処理を(1バイト内の)bit回繰り返す

  CRCの最下位ビットの値をflagとしCRCを1ビットシフトする
  flag = CRC & 1 ← 最下位ビットを取っておく
  CRC = CRC >> 1 ← そのビットをシフトして消す

  flagが1ならCRCにpをxorする
  CRC = CRC ^ p