模2运算

本文详细介绍了模2运算的基本概念及其实现方式,包括模2加、减、乘、除等运算,并通过具体实例展示了每种运算的具体过程。

模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。


①模2加法运算定义为:
0+0=0 0+1=1 1+0=1 1+1=0
例如0101+0011=0110,列竖式计算:
0 1 0 1
+ 0 0 1 1
──────
0 1 1 0


②模2减法运算定义为:
0-0=0 0-1=1 1-0=1 1-1=0
例如0110-0011=0101,列竖式计算:
0 1 1 0
- 0 0 1 1
──────
0 1 0 1


③模2乘法运算定义为:
0×0=0 0×1=0 1×0=0 1×1=1
多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果(或称部分积)时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。例如1011×101=100111,列竖式计算:
1 0 1 1
× 1 0 1
──────
1 0 1 1
0 0 0 0
+ 1 0 1 1
────────
1 0 0 1 1 1


④模2除法运算定义为:
0÷1=0 1÷1=1
多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。后者按带借位的二进制减法,根据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义 的。实际上,在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算:
1 1 1 0
────────
1 0 1 1〕1 1 0 0 1 0 0
 1 0 1 1
──────
1 1 1 1
- 1 0 1 1
──────
1 0 0 0
- 1 0 1 1
──────
0 1 1 0
- 0 0 0 0
──────
1 1 0

### 关于2运算的示例和解释 #### 2运算的核心概念 2运算进制算法的一种形式,主要用于CRC校验技术中。它与传统的四则运算相似,但也存在显著差异——2运算不考虑进位和借位[^1]。这意味着在执行法或减法操作时,每一位的结果仅由当前两位决定,而不受其他位置的影响。 #### 22法等同于逻辑上的“异或”(XOR)运算。其规则如下: - `0 + 0 = 0` - `1 + 0 = 1` - `0 + 1 = 1` - `1 + 1 = 0` 这种运算的特点是没有进位机制。例如,计算两个进制序列的2法: ```plaintext 1101 (十进制为13) XOR 1011 (十进制为11) —————— 0110 (十进制为6) ``` 因此,`1101 XOR 1011 = 0110`[^2]。 #### 2减法 2减法的操作规则实际上与2法完全一致。这是因为进制下的补码表示使得法和减法可以统一处理。具体例子如下: ```plaintext 1010 (被减数) MOD2 0111 (减数) —————— 1001 (差) ``` 这里同样遵循无借位的原则,即每位独立计算结果。 #### 2乘法 2乘法的过程类似于普通的进制乘法,但在累积部分积的时候采用了2法而非传统法。举例如下: 假设我们要计算 `1011 × 101` 的2乘法过程: ```plaintext 1011 (第一个因数) × 101 (第个因数) —————————— 1011 (最低有效位相乘的部分积) 0000 (中间一位移位后的零填充) + 1011---- (最高有效位相乘并左移两次) —————————— 100111 (最终结果) ``` 通过逐位相乘并将结果用2法累起来得到最后答案 `100111`。 #### 2除法 2除法则用于多项式的简化表达以及数据传输错误检测等领域。它的基本原理是从高位向低位依次尝试去除子串直到无法再继续为止。下面给出一个简单的实例说明如何完成这一操作: 设 dividend=`110101`, divisor=`1011` 进行2除法,则步骤如下所示: ```plaintext Step 1: Compare leading bits of Dividend and Divisor. If the degree(Dividend)>=degree(Divisor), subtract them using mod2 addition. Dividend: 110101 Divisor : 1011 Performing division step-by-step: 1. Align divisor under first three digits -> Perform xor operation between '110' & '101' Result after Step 1 => Remainder becomes '011' Continue this process until all possible divisions are done... Final Quotient will be determined based on how many times we could perform such operations successfully without remainder exceeding length limit set by original problem constraints. ``` 以上展示了完整的2除法流程概述。 ### 结论 综上所述,2运算是一套基于进制系统的独特数学工具集,在通信领域有着不可替代的作用。无论是简单直观的减还是稍微复杂的乘除都能借助这些基础定义来实现高效可靠的数值转换及验证功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值