当前位置:首页 » 操作系统 » 摩二算法

摩二算法

发布时间: 2022-06-18 12:26:53

Ⅰ 7. 现要发送的数据是1101011011,采用的CRC生成多项式为为G(X)=X4+X+1,试求校验码。如果接收方收到的数据

①计算信息编码多项式T(x)

M(X)=1101011011 G(x)=10011

生成多项式的最高次幂r=4,信息码附加4个0后形成新的多项式。

M'(x):11010110110000

②用模2除法求M'(x)/G(x)的余数


③得出要传输的循环冗余校验码多项式

将余数1110直接附加在M(x)的后面得T(x)=11010110111110

④接收端对接收到的T(x)进行校验

设接收端接收到的数据为多项式T’(x),将T’(x)除以G(x),若余数为0,即T’(x)=T(x),则认为没有错误。

T’(x)/G(x)=(Q(x)×G(x)+R(x)+R(x))/G(x)=(Q(x)×G(x))/G(x)=Q(x)

若余数不为0,即T’(x)≠T(x),认为有错。

Ⅱ 计算机组成原理中,纯小数的模为什么是2啊

因为存在一个符号位。

模:是计量器具的容量,或称模数。

在计算机中,机器数表示数据的字长即位数是固定的。其模数的大小: 1)对于n位整数(含一位符号位),则它的模数为2的 n次方 , 2)对于纯小数(含符号位),则它的模数总是2。

二进制计数中模数为2的n次方,n为二进制位数,对于纯小数,它们的模永远都是2,因为一旦小数位全为1后就会进位位整数位,所以小数位的周期都是2,即模数(容量)为2。

模2运算是一种二进制算法,CRC校验技术中的核心部分。与四则运算相同,模2运算也包括模2加法、模2减法、模2乘法、模2除法四种二进制运算。与四则运算不同的是模2运算不考虑进位和借位,模2算术是编码理论中多项式运算的基础。模2算术在其他数字领域中的应用也是很广泛的。

(2)摩二算法扩展阅读 :

模2除法具有下列三个性质:

1、当最后余数的位数小于除数位数时,除法停止。

2、当被除数的位数小于除数位数时,则商数为0,被除数就是余数。

3、只要被除数或部分余数的位数与除数一样多,且最高位为1,不管其他位是什么数,皆可商1。

模2算术是编码理论中多项式运算的基础。模2算术在其他数字领域中的应用也是很广泛的。

参考资料来源:网络-模2运算

参考资料来源:网络-计算机组成原理




Ⅲ 用c语言实现模2算法,eg:10010001110000000除10011,求余数。

#include<stdio.h>
#include<string.h>

void Bin2Dec(int *bin, int *Dec, int num)
{
int i, j = 1;

*Dec = 0;
for(i = num - 1; i > -1; i--)
{
*Dec += bin[i] * j;
j *= 2;
}
}

void Dec2Bin(int *Bin, int Dec, int *num)
{
int i = 0;

while(1)
{
Bin[i++] = Dec % 2;
Dec /= 2;
if(!Dec)
break;
}
*num = i;
}

void main()
{
char bin[100];
int i, j, Bin[100], dividend, divider, remainder;

printf("Input a binary as dividend:\n");
gets(bin);
j = 0;
for(i = 0; i < strlen(bin); i++)
Bin[j++] = bin[i] - 48;
Bin2Dec(Bin, & dividend, i);
printf("Input a binary as divider:\n");
gets(bin);
j = 0;
for(i = 0; i < strlen(bin); i++)
Bin[j++] = bin[i] - 48;
Bin2Dec(Bin, & divider, i);
remainder = dividend % divider;
Dec2Bin(Bin, remainder, &i);
printf("The remainder: ");
for(j = i - 1; j > -1; j--)
printf("%d", Bin[j]);
printf("\n");
}

Ⅳ 模2除法的运算过程是怎么样的

被除数÷除数(4位二进制),从被除数高位起,取4位,>除数,商记为1;<除数,记为0。
怎么会4个O。因为上一位除数与被除数相等,相减差为3个0,本次除从被除数上拖1位下来,该位正好是0。
供参考

Ⅳ 二进制求余数(模2算法),怎么用C语言实现

求得结果是返回得到的余数么?是转换为二进制还是??

如果是转换为二进制则代码如下:

//test3.cpp:定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include<stdio.h>

#include<iostream>

#include<math.h>

usingnamespacestd;

voidcomput(intx,char*s);

int_tmain(intargc,_TCHAR*argv[])

{

intx,i;

chars[32];

scanf("%d",&x);

comput(x,s);

for(i=strlen(s),i--;i>=0;i--)

{

cout<<s[i];

}

printf(" ");

system("pause");

return0;

}

voidcomput(intx,char*s)

{

inty;

inti=0,j;

while(true)

{

if(x%2==0)

{

s[i++]='0';

}

else

{

s[i++]='1';

}

j=x/2;

x=j;

if(j==0)

{

s[i]='';

return;

}

}

}

截图如下:

Ⅵ crc里的模二算法

是把整个所有字节看成一组二进制来除,
而且按道理应该一个位一个位的除,
但是由于这个除法具有一些规律,也能一次计算多个位(畅畅扳堆殖瞪帮缺爆画比如8个位),
这样你看到的最后计算就是每次都是处理的一个字节.
另外,实际的crc计算还有一些问题要考虑
(1)任何长度的全0串,crc的结果都是0,
这意味者如果数据最前面被增加或者减少了0,crc无法检测出来,
为了解决这个问题,一般crc计算会直接指定一个初始值,就是相当于在最前面加了个非0的前缀,这样就能检测出这种情况.
(2)一般crc的结果是作为附加数据放在原来数据的末尾,
这种情况下,
如果直接把这个附加了crc的数据做crc计算,会得到0,
这时候也会有(1)的类似问题,
如果直接用拉通的crc是否为0来判断,
则在最后可能会有多余的0,
无法检测出来.
因而有的crc规定最后的crc要做一个变换(比如取反)然后再加在结尾,
这样就不可以用拉通crc为0来检查了.

Ⅶ 请教模2除法,模2加法,模2减法的具体推算步骤。

1、加法,模二加的运算法则是:
0+0=00 + 1 = 1 1+ 0 = 1 1+ 1 = 0
理解:两个二进制数相加不考虑进位,例如01 + 11 = 10,对于两个数的低位都是1,进行模二和为0,但是没有进位,所以高位的0 加1 还是1,因为不考虑低位的进位。
2、减法,模二减的运算法则:
0 - 0 = 0 0 - 1 = 1 1 - 0 = 1 1 - 1 = 0
例: 1 0 1 0
- 0 1 1 0
---------------------
1 1 0 0
上式的减法中,第三位的减法中0-1,如果按照二进制的减法是有借位的,但是对于模二减是没有借位的,所以才会有第四位中的1-0仍然为1。
细心的同学会发现,其实两个数的“模二加”和“模二减”的结果都是一样的,也就是我们说的“异或”,各位亲,你们说是不是?
3、乘法,模二乘的运算法则:
0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1
例如:1011
X111
---------------
1011
1011
1011
-------------------
110001
模二乘与一般二进制乘法的区别是在于下面的加法部分,模二乘的加法部分依然是模二加的法则
4、除法,模二除运算法则:
模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,列竖式计算:

模二除法

Ⅷ 什么是模2运算啊

模2就是mod
2,通俗的讲就是“除以2之后的
余数

比如3
mod
2
=
1
4
mod
2
=
0
可以看出,模2之后结果要么是0要么是1,{0,
1}就是2的
剩余类

Ⅸ 什么叫按位模2加运算啊

所谓模2加,就是相加后达到2就进位,但只保留一位。比如0+0=0不必进位,所以保留为0。0+1=1不必进位,保留为1。1+1=10,保留为0。这种效果也就是按位异或运算(进行运算的两位相同位结果为0,不同结果为1)。

热点内容
如何制作薯仔服务器 发布:2024-11-07 05:27:49 浏览:811
机器码反编译教程 发布:2024-11-07 05:24:17 浏览:213
动迁三块砖算法 发布:2024-11-07 05:18:06 浏览:826
视窗压缩 发布:2024-11-07 04:45:06 浏览:887
fc2点此访问 发布:2024-11-07 04:45:04 浏览:760
上传吊牌图 发布:2024-11-07 04:38:48 浏览:919
密码学什么概念 发布:2024-11-07 04:38:48 浏览:848
linuxpdf转word 发布:2024-11-07 04:37:06 浏览:213
安卓手机为什么用ufs 发布:2024-11-07 04:15:09 浏览:559
数据库删除所有表 发布:2024-11-07 04:13:55 浏览:576