模2除法(CRC检验码)

关于一个二进制数1111000 除以1101,模2除法的商为1011,余数为111.这个结果不同于十进制除法。所以特记下。具体步骤如下:

  1. #第一步  
  2. 1111000  
  3. 1101  
  4. 0010000 ----余数,商为1,只要第一位非0商就是1  
  5. #第二步,每步移一位,当起始位为0时,除以0;为1时除以除数。  
  6. 010000  
  7. 0000  
  8. 010000  ----余数,商为0,只要第一位是0商就是0  
  9. #第三步  
  10. 10000  
  11. 1101  
  12. 01010  -----余数,商为1,这里的余数你猜出,其实就是对应位异或  
  13. #第四步  
  14. 1010  
  15. 1101  
  16. 0111   ------余数,商为1,如果位数比除数还小,不再继续运算  
  17. #最终余数为111,商为1011  

模2除法可以用在CRC冗余校验上。K,H均为2进制数,K向左移R,然后K除以H。模2除得到的余数在放到R位中。例如:K=1111,H=1101,R=3,移位之后得1111000,最后CRC=1111111。


CRC校验码还有一种方法:

例题:采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是()

解析:G(x)=X4+X+1对应的二进制序列为10011,下面进行“按位异或”运算:


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: PNG(Portable Network Graphics)是一种无损压缩的图像格式,它使用CRC(循环冗余校验)算法来生成并验证图像的检验码CRC是一种校验算法,用于检测数据传输或存储中的错误。它将数据视为一个多项式,并通过除法运算来计算CRC值。在PNG图像中,CRC用于检验数据块的完整性,以确保图像数据没有损坏或遭到篡改。 PNG图像由多个数据块(Chunks)组成,其中包括图像数据、元数据、调色板等信息。每个数据块都有一个4字节的CRC校验码,位于数据块的结尾处。CRC校验码由数据块的类型字段和数据字段一起计算得出。 CRC校验的计算公式如下: 1. 首先,将数据块的类型字段和数据字段连接起来,形成一个新的数据序列。 2. 初始化一个CRC校验值为0xFFFFFFFF。 3. 遍历数据序列的每个字节,按位异或运算更新CRC校验值。 4. 对于每个字节,进行8次循环,每次循环右移1位并判断最低位是否为1,若是,则与预先定义的多项式0xEDB88320按位异或。 5. 循环结束后,对CRC校验值进行按位取反操作。 6. 最终的CRC校验码即为取反后的CRC校验值。 使用CRC校验码可以验证图像数据在传输或存储过程中的完整性和正确性。在接收或读取PNG图像时,可以重新计算CRC校验码并与原来的校验码进行比较,若二者相等,则可以确认图像数据没有损坏或被篡改。这对于保证图像质量和完整性非常重要。 ### 回答2: PNG(Portable Network Graphics)是一种无损压缩的图像文件格式,其中的CRC(Cyclic Redundancy Check)是一种用于验证数据完整性的校验码。 PNG图像文件在存储时,会对图像数据进行压缩和编码处理。而CRC检验码则是在编码过程中生成的一串16位二进制数,用于验证图像数据在传输或存储过程中是否发生了变化或损坏。 CRC检验码的计算过程如下: 1. 初始化一个16位的寄存器,将其值设置为全1。 2. 将待计算的数据按字节或按位逐个与寄存器的值异或操作。 3. 对于每个被异或的字节(或位),将寄存器向右移动一位,并在最高位上填充0。 4. 若寄存器最右边的位为1,则将寄存器的值与一个预设的常数多项式进行异或操作。 5. 重复步骤2到4,直到所有的数据都被处理完。 6. 最后,将得到的寄存器值作为CRC校验码。 CRC检验码的应用可以有效地检测到数据传输过程中的误码和损坏。当接收端接收到数据后,同样按照上述步骤计算接收到的数据的CRC值,并将其与发送端传输的CRC值进行比较。若两个值不相等,则说明数据发生了变化或损坏。 通过使用CRC检验码,可以提高数据的完整性和可靠性,保证在数据传输和存储过程中数据的完整性。因此,CRC检验码在PNG图像文件中的计算和应用起到了重要的作用。 ### 回答3: PNG图片的CRC(循环冗余校验)检验码是一种校验方法,用于验证数据的完整性和准确性。它通过计算数据块中每个字节的值,并执行一系列比特操作来生成一个32位的CRC值。 CRC检验码计算的过程如下: 1. 初始化CRC寄存器为全1(0xFFFFFFFF); 2. 逐个读取数据块中的每个字节; 3. 将当前字节的值与CRC寄存器的低8位进行异或运算; 4. 重复8次,每次进行一次循环: - 如果CRC寄存器的最低位为1,则右移一位,并将0xEDB88320与CRC寄存器进行异或运算; - 如果CRC寄存器的最低位为0,则只右移一位; 5. 重复步骤2~4,直到处理完所有的字节; 6. 将最终的CRC寄存器的值取反,即得到CRC检验码。 这个32位的CRC检验码可以用于验证PNG图片中的数据是否被篡改或损坏。当CRC值与存储在PNG文件中的CRC校验码相匹配时,说明数据完整和准确;如果不匹配,则说明数据可能已经被修改或损坏。 通过使用CRC检验码,PNG图片可以确保数据的完整性,提高数据传输的可靠性,并防止数据在传输过程中出现错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值