请问什么是异或校验?

奇偶校验就是异或校验吗?~

如果所需要校验的数据A中1的个数为偶数 ,那么A按位异或的值就为0,否则为1。

xor异或运算公式
1、逻辑加法(“或”运算)
逻辑加法通常用符号“+”或“∨”来表示。逻辑加法运算规则如下:
0+0=0, 0∨0=0
0+1=1, 0∨1=1
1+0=1, 1∨0=1
1+1=1, 1∨1=1
从上式可见,逻辑加法有“或”的意义。也就是说,在给定的逻辑变量中,A或B只要有一个为1,其逻辑加的结果为1;两者都为1则逻辑加为1。
2、逻辑乘法(“与”运算)
逻辑乘法通常用符号“×”或“∧”或“·”来表示。逻辑乘法运算规则如下:
0×0=0, 0∧0=0, 0·0=0
0×1=0, 0∧1=0, 0·1=0
1×0=0, 1∧0=0, 1·0=0
1×1=1, 1∧1=1, 1·1=1
不难看出,逻辑乘法有“与”的意义。它表示只当参与运算的逻辑变量都同时取值为1时,其逻辑乘积才等于1。
3、逻辑否定(非运算)
逻辑非运算又称逻辑否运算。其运算规则为:
0=1 非0等于1
1=0 非1等于0
4、异或逻辑运算(半加运算)
异或运算通常用符号"⊕"表示,其运算规则为:
0⊕0=0 0同0异或,结果为0
0⊕1=1 0同1异或,结果为1
1⊕0=1 1同0异或,结果为1
1⊕1=0 1同1异或,结果为0
即两个逻辑变量相异,输出才为1


异或校验算法(又称为BCC校验)
常见的校验方法有:奇偶校验、循环冗余校验CRC、异或校验、校验和、汉明校验
搞了半天,异或校验就是偶校验
下面就是异或校验的算法,多用于串口通信。其它校验方法以后用到再研究吧!
#include "stdio.h"
void main()
{
int i;
//任意10个数值,也可以不是8位
unsigned char data[10]={0x12,0x21,0x1A,0xB1,0xC1,0xEB,0xDF,0xCA,0xF6,0xDD};
unsigned char out;//用于保存异或结果
out=0x00;
for (i=0;i<sizeof(data);i++)
{
out^=data;
}
printf("原来的校验值:%X
",out);
out^=(data[0]^0xee);//将data[0]改为新数据后计算新校验和的方法
out^=(data[5]^0x20);//将data[5]改为新数据后计算新校验和的方法
printf("修改后校验值:%X
",out);
data[0]=0xee; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
data[5]=0x20; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
out=0x00;
for (i=0;i<10;i++)
{
out^=data;
}
printf("原始方法得出校验值:%X
",out);
}

异或校验算法(又称为BCC校验)

下面就是异或校验的算法,多用于串口通信:

#include "stdio.h" 

void main() 

int i; 

//任意10个数值,也可以不是8位 

unsigned char data[10]={0x12,0x21,0x1A,0xB1,0xC1,0xEB,0xDF,0xCA,0xF6,0xDD}; 

unsigned char out;//用于保存异或结果 

out=0x00; 

for (i=0;i<sizeof(data);i++) 

{

out^=data; 

printf("原来的校验值:%X
",out); 

out^=(data[0]^0xee);//将data[0]改为新数据后计算新校验和的方法 

out^=(data[5]^0x20);//将data[5]改为新数据后计算新校验和的方法 

printf("修改后校验值:%X
",out); 

data[0]=0xee; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确  

data[5]=0x20; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确 

out=0x00; 

for (i=0;i<10;i++) 

{

out^=data; 

printf("原始方法得出校验值:%X
",out); 

}

作用:

防止自己的程序被篡改。

有些可执行程序,当被改了资源时再运行会有文件已损坏的提示,这就是使用了数据校验。本例是用md5做为数据校验的算法。当然你可以使用个性化的比如des作为数字签名,那样安全性更高。

扩展资料:

最简单的检验

实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。

应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。

奇偶校验Parity Check

实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。

应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。

md5校验和数字签名

实现方法:主要有md5和des算法。

适用范围:数据比较大或要求比较高的场合。如md5用于大量数据、文件校验,des用于保

密数据的校验(数字签名)等等。

应用例子:文件校验、银行系统的交易数据

参考资料:百度百科-数据校验



异或是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

扩展资料

运算法则

1)交换律:a ^ b = b ^ a。

2)结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;

d = a ^ b ^ c 可以推出 a = d ^ b ^ c。

3)自反性:a ^ b ^ a = b。

异或运算最常见于多项式除法,不过它最重要的性质还是自反性:

A^B^ B=A,即对给定的数A,用同样的运算因子(B)作两次异或运算后仍得到A本身。这是一个神奇的性质,利用这个性质,可以获得许多有趣的应用。例如,所有的程序教科书都会向初学者指出,要交换两个变量的值,必须要引入一个中间变量。但如果使用异或,就可以节约一个变量的存储空间:

设有A,B两个变量,存储的值分别为a,b,则以下三行表达式将互换他们的值表达式(值):

A=A^B(a^b);

B=B^A(b^a^b=a);

A=A^B(a^b^a=b)。

类似地,该运算还可以应用在加密,数据传输,校验等等许多领域。

x是二进制数0101;

y是二进制数1011;

则结果为x^y=1110;

0^0=0;0^1=1;1^0=1;1^1=0;

只有在两个比较的位不同时其结果是1,否则结果为0。

即“相同为0,不同为1”。

参考资料:百度百科-异或



xor异或运算公式
1、逻辑加法(“或”运算)
逻辑加法通常用符号“+”或“∨”来表示。逻辑加法运算规则如下:
0+0=0, 0∨0=0
0+1=1, 0∨1=1
1+0=1, 1∨0=1
1+1=1, 1∨1=1
从上式可见,逻辑加法有“或”的意义。也就是说,在给定的逻辑变量中,A或B只要有一个为1,其逻辑加的结果为1;两者都为1则逻辑加为1。
2、逻辑乘法(“与”运算)
逻辑乘法通常用符号“×”或“∧”或“·”来表示。逻辑乘法运算规则如下:
0×0=0, 0∧0=0, 0·0=0
0×1=0, 0∧1=0, 0·1=0
1×0=0, 1∧0=0, 1·0=0
1×1=1, 1∧1=1, 1·1=1
不难看出,逻辑乘法有“与”的意义。它表示只当参与运算的逻辑变量都同时取值为1时,其逻辑乘积才等于1。
3、逻辑否定(非运算)
逻辑非运算又称逻辑否运算。其运算规则为:
0=1 非0等于1
1=0 非1等于0
4、异或逻辑运算(半加运算)
异或运算通常用符号"⊕"表示,其运算规则为:
0⊕0=0 0同0异或,结果为0
0⊕1=1 0同1异或,结果为1
1⊕0=1 1同0异或,结果为1
1⊕1=0 1同1异或,结果为0
即两个逻辑变量相异,输出才为1

异或校验算法(又称为BCC校验)
常见的校验方法有:奇偶校验、循环冗余校验CRC、异或校验、校验和、汉明校验
搞了半天,异或校验就是偶校验
下面就是异或校验的算法,多用于串口通信。其它校验方法以后用到再研究吧!
#include "stdio.h"
void main()
{
int i;
//任意10个数值,也可以不是8位
unsigned char data[10]={0x12,0x21,0x1A,0xB1,0xC1,0xEB,0xDF,0xCA,0xF6,0xDD};
unsigned char out;//用于保存异或结果
out=0x00;
for (i=0;i<sizeof(data);i++)
{
out^=data;
}
printf("原来的校验值:%X\n",out);
out^=(data[0]^0xee);//将data[0]改为新数据后计算新校验和的方法
out^=(data[5]^0x20);//将data[5]改为新数据后计算新校验和的方法
printf("修改后校验值:%X\n",out);
data[0]=0xee; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
data[5]=0x20; //采用原始的方法计算新的校验和,和前面的校验和对比是否正确
out=0x00;
for (i=0;i<10;i++)
{
out^=data;
}
printf("原始方法得出校验值:%X\n",out);
}

和校验异或校验哪个更好
答:异或校验又称异或和校验或者BCC校验。BCCcheck是比较常用的串口数据校验。检验和的概念一般体现在8bit长度的字符数组。注意异或校验是异或运算,需要先强制把字符转换成整形数据。校验,是一个数学术语,是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。分析国内外对校验的用法,其...

51单片机里的和校验,异或校验,具体的步骤是什么,代码怎么写?
答:和校验就是把待校验的数据字节累加起来,最低的1字节或2字节与接收到的校验和相符,则表明传输过程没有问题。异或校验类似,把待校验的数据字节逐个进行按位异或运算,最后的结果与接收到的校验值相符,则表明传输过程没有问题,

如何校验网络传输的数据
答:2、奇偶校验(Parity Check)在数据存储和传输中,字节中额外增加一个比特位,用来检验错误,校验位可以通过数据位异或计算出来。应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。3、BCC异或校验法(block check character,块校验码)很多基于串口的通讯都用这种既简单又相当准确...

请问异或取反校验是什么教研方式,具体方法是什么?
答:常见的校验方法有:奇偶校验、循环冗余校验CRC、异或校验、校验和、汉明校验 搞了半天,异或校验就是偶校验 下面就是异或校验的算法,多用于串口通信。其它校验方法以后用到再研究吧!include "stdio.h"void main(){ int i;//任意10个数值,也可以不是8位 unsigned char data[10]={0x12,0x21,0x...

异或是什么意思
答:简单说,异或就是相同的出1,不同的出0 问题六:请问什么是异或校验? xor异或运算公式 1、逻辑加法(“或”运算)逻辑加法通常用符号“+”或“∨”来表示。逻辑加法运算规则如下:0+0=0, 0∨0=0 0+1=1, 0∨1=1 1+0=1, 1∨0=1 1+1=1, 1∨1=1 从上式可见,逻辑加法有“或...

同或和异或的符号
答:同或和异或都是经常在编程中使用的运算符。其中,同或常被用于网络通信中的错误检测,例如将要发送的数据按位进行同或运算,将结果作为校验码携带在数据中发送过去,接收方再次对数据进行同或运算,以检测数据传输过程中是否发生了错误。而异或则可以被用于加密和解密数据,例如将要传输的数据和一个密钥...

什么叫异或?什么叫同或?
答:异或略称为XOR、EOR、EX-OR 同或”是一个数学运算符,应用于逻辑运算。 其运算法则为a同或b=ab+a‘b’(a'为非a)。真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。就是说两个值相同,则同或结果为真。反之,为假。——简称...

C语言字符串校验和
答:常用的校验和有累加和异或方式。比如,[1,2,3,4,5]这一组数据的累加较验和就是1+2+3+4+5=15 3.异或。异或是一种二进制(逻辑)运算,定义如下:1与1、0与0的异或结果为0 1与0、0与1的异或结果为1 如35和27,其二进制表示为:100011和11011。低位对齐后进行异或,结果为:111000,也就...

...数据记录最后一个字节要求xor校验是什么意思呢?
答:xor一种校验的算法 前面的数据根据xor算法得到的校验码 补充到最后一位(或者最后一个byte或bit)然后再发送 也就是说你发送的数据是经过校验了的 同理接收方也要根据同样的算法把数据校验一次 看是否等于校验位 等于说明数据是正确的 否则就要求对方重新发送 你这个程序应该是自己编写了通讯协议了的 ...

奇偶校验就是异或校验吗?
答:如果所需要校验的数据A中1的个数为偶数 ,那么A按位异或的值就为0,否则为1。

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网