當前位置:首頁 » 操作系統 » 摩二演算法

摩二演算法

發布時間: 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 06:33:57 瀏覽:350
二級c需要編譯運行嗎 發布:2024-11-07 06:33:09 瀏覽:590
編程器刷機 發布:2024-11-07 06:22:23 瀏覽:39
手機存儲秘籍 發布:2024-11-07 06:08:27 瀏覽:38
紅館壓縮包 發布:2024-11-07 06:06:13 瀏覽:658
dtls加密 發布:2024-11-07 05:58:38 瀏覽:256
用qq傳文件夾 發布:2024-11-07 05:51:22 瀏覽:664
安卓手機跟蘋果哪個打游戲好 發布:2024-11-07 05:46:22 瀏覽:795
如何製作土豆伺服器 發布:2024-11-07 05:27:49 瀏覽:812
機器碼反編譯教程 發布:2024-11-07 05:24:17 瀏覽:214