模二运算

博主分享大二计算机网络挂科后自学补考通过的经历,重点介绍数据链路层的循环冗余检验技术(CRC)。阐述了CRC编码基本原理,即发送方和接收方协商生成式G,用模二运算使数据附加冗余码后能被G整除来检验差错,还举例说明了模二除法运算规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个运算是我在大二上学期计算机网络中学到的,当时没有好好学导致挂科,十分后悔,后来学了通过看视频查资料自学补考通过了考试。
下面来说说模二运算吧,当时自学的时候看不太懂,多看了几道例题才差不多懂了。
开始:在数据链路层通常使用循环冗余检验技术来进行差错检验。
CRC编码基本原理:发送方和接收方必须先协商一个r+1bite的生成式G,算法要求G 的最高位和最低位是1,考虑d的比特数据D,发送方要选择一个合适的r比特冗余码R,并把它附加到D上,如果得到的d+r比特模式用模二运算正好能被G整除,用G去接受到的d+r比特,如果余数非零则检测出错,否则认为数据正确。
下面举个例子:
假设待传送数据是D101001(d=6),G=1101(r=3),商是Q=110101;余数是001,在这里插入图片描述
被除数就是由D+r(r是三位,就在后面加三位0,以此类推),模二除法运算规则就是相同为0,不同为1的异或运算。

### 运算的计算方法 运算是一种基于进制数的特殊运算方式,在计算机科学和通信领域中广泛应用。以下是关于运算的具体计算方法及其特点: #### 1. **加法** 加法是指在进制数之间进行无进位的加法操作,其本质是对每一位上的值进行 XOR(异或)运算[^2]。具体规则如下: - `0 ⊕ 0 = 0` - `0 ⊕ 1 = 1` - `1 ⊕ 0 = 1` - `1 ⊕ 1 = 0` 例如,对于两个进制数 `A=1101` 和 `B=1011`,它们的加法结果为: ```plaintext A: 1101 ⊕ B: 1011 --------- Result: 0110 ``` #### 2. **减法** 减法本质上与加法相同,因为在进制中,“减去某一位”等价于对该位取反再做加法。换句话说,减法也可以通过 XOR 运算完成。 #### 3. **除法** 除法主要用于多项式的除法运算,尤其是在 CRC(循环冗余校验)算法中。它的核心思想是不断尝试用被除数去除当前的部分商,直到剩余部分小于除数为止。此过程类似于普通的长除法,但每一步都使用加法代替常规加法。 假设我们需要用 `M=1101` 对 `D=1011` 进行除法,则步骤如下: 1. 将 M 左移至首位对齐 D; 2. 使用加法消掉最高有效位; 3. 继续移动并重复上述过程直至结束。 最终得到的结果包括商 Q 和余 R。 #### 示例代码实现 下面是一个 Python 实现除法的例子: ```python def mod_two_division(dividend, divisor): pick = len(divisor) tmp = dividend[:pick] while pick < len(dividend): if tmp[0] == '1': tmp = xor_bits(divisor, tmp) + dividend[pick] else: tmp = xor_bits(['0' * len(divisor)], tmp) + dividend[pick] pick += 1 if tmp[0] == '1': tmp = xor_bits(divisor, tmp) else: tmp = xor_bits('0'*len(divisor), tmp) return tmp def xor_bits(a, b): res = [] for i in range(1, len(b)): if a[i] == b[i]: res.append('0') else: res.append('1') return ''.join(res) # Example Usage dividend = "11101" divisor = "101" remainder = mod_two_division(dividend, divisor) print(f"Remainder after Modulo-2 Division is {remainder}") ``` #### 结论 综上所述,运算是指按照进制体系下的特定规则来进行的一系列数学操作,主要特点是忽略传统意义上的进位机制,并且广泛应用于数据传输验证等领域之中[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值