Пример #1
0
// Not optimized for speed
bool CRC_Code::check_parity(const bvec &coded_bits) const
{
  int n = coded_bits.size();
  bvec temp;

  if (reverse_parity) {
    temp = concat(coded_bits.left(n - no_parity), reverse(coded_bits.right(no_parity)));
  }
  else {
    temp = coded_bits;
  }

  for (int i = 0; i < temp.size() - polynomial.size() + 1; i++) {
    if (temp(i) == 1) {
      temp.set_subvector(i, temp(i, i + no_parity) + polynomial);
    }
  }

  if (temp(temp.size() - no_parity, temp.size() - 1) == zeros_b(no_parity))
    return true;
  else
    return false;
}