• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
KYS_01
博客园    首页    新随笔    联系   管理    订阅  订阅
CRC模2除法

模2加减法
模2除法需要用到模2加减法,关于模2加减法,其实就是异或操作,规则如下:

//不需要考虑进位和借位
0 ± 0 = 0
1 ± 1 = 0
0 ± 1 = 1
1 ± 0 = 1
例: 1101 ± 1001 = 0100
计算如下:
1 1 0 1
± 1 0 0 1
-----------
0 1 0 0
1
2
3
4
5
6
7
8
9
10
11
简记:同为0,异为1

模2除法:
规则:假设被除数X,和除数P,余数R
1. 被除数X除以P(对X和P做模2加减法),被除数首位为1时,商1,为0时商0
2. 所得余数去除首位(左移一位):

- R第一位为0,将其作为新的被除数,除以0,此时其首位为0,商即为0
- R第一位为1,将其作为新的被除数,除以P,此时其首位为1,商即为1
1
2
3. 重复第2步直到R位数少于P位数

例:1111000对除数1101做模2除法:
先说结果: 商1011余111
整体运算
1 0 1 1 //商
---------------
1 1 1 1 0 0 0 //被除数,注意首位为1
1 1 0 1 //被除数首位为1,除以除数
---------------
0 1 0 0 0 0 //余数去除首位,作为新的被除数
0 0 0 0 //被除数首位为0,除以0
---------------
1 0 0 0 0 //余数去除首位,作为新的被除数
1 1 0 1 //被除数首位为1,除以除数
---------------
1 0 1 0 //余数去除首位,作为新的被除数
1 1 0 1 //被除数首位为1,除以除数
---------------
0 1 1 1 //余数,此时余数位数少于除数,不能继续除了(忽略首位0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
分步分析
第一步(每一步其实都是模2加减法运算):
1 //商
-------------
1 1 1 1 0 0 0 //被除数,注意首位为1
1 1 0 1 //除数
-------------
0 0 1 0 0 0 0 //余数,模2运算后结果
1
2
3
4
5
6
商的第一位:被除数首位为1,商为1(只要被除数首位非0,商就是1)

第二步:余数去除首位(左移一位),当第一位为0时,除以0;为1时,除以除数。
1 0 //商
---------------
0 1 0 0 0 0 //余数去除首位,作为新的被除数
0 0 0 0 //被除数首位为0,除以0
---------------
0 1 0 0 0 0 //余数,模2运算后结果
1
2
3
4
5
6
商的第二位:被除数首位为0,商为0(只要被除数首位是0商就是0)

第三步
1 0 1 //商
----------------
1 0 0 0 0 //余数去除首位,作为新的被除数
1 1 0 1 //被除数首位为1,除以除数
----------------
0 1 0 1 0 //余数,模2运算后结果
1
2
3
4
5
6
商的第三位:被除数首位为1,商为1

第四步
1 0 1 1 //商
----------------
1 0 1 0 //余数去除首位,作为新的被除数
1 1 0 1 //被除数首位为1,除以除数
----------------
0 1 1 1 //余数,此时余数位数少于除数,不能继续除了
1
2
3
4
5
6
商的第四位:被除数首位为1,商为1
此时不能继续做除法,计算结束

得到最终结果: 商1011余111
————————————————
版权声明:本文为CSDN博主「学Android的日子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33411687/article/details/82593466

posted on 2020-03-06 12:22  KYS_01  阅读(435)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3