数据通信的校验算法核心思想:为了保证通讯数据的可靠性,通常加入校验来验证一帧数据是否有误,校验的方式有很多种,异或校验是常见的一种,你这个如2楼说的,是逐字节进行按位异或运算,结果放在最后一个字节,接收方收到数据进行同样计算,如果最后一个字节和计算结果一致,则可认为这一帧数据可信。...
分类:
编程语言 时间:
2014-09-10 19:34:10
阅读次数:
157
按位异或运算可以在不引入临时变量的情况下实现两个变量值得互换。intmain()
{
inta=10;
intb=12;
cout<<"a="<<a<<";"<<"b="<<b<<endl;
a=a^b;//异或运算
b=a^b;
a=b^a;
cout<<"a="<<a<<";"<<"b="<<b<..
分类:
其他好文 时间:
2014-09-10 02:56:41
阅读次数:
186
一看就是找规律的题。只要熟悉异或的性质,可以秒杀。为了防止忘记异或的规则,可以把异或理解为半加运算:其运算法则相当于不带进位的二进制加法。一些性质如下:交换律:结合律:恒等律:归零律:典型应用:交换a和b的值:a=a^b^(b=a);#include#include#include#include#...
分类:
其他好文 时间:
2014-09-09 23:02:29
阅读次数:
314
按位异或运算符,通常称为XOR运算符,遵守以下规则:对于两个运算数的相应位,如果任何一个位是1,但不是两者全为1,那么结果的对应位将是1;否则是0。该运算符的真值表:b1 b2 b1 ^ b2-------------------------0 0 00 1 11 0 11 1 0如果把w1和w2分...
分类:
其他好文 时间:
2014-09-09 23:02:09
阅读次数:
309
题目大意:在给定区间内对每个数的最后一个二进制为1的位将其修改为0,如果数本身已经为0了,就不做改变输出给定区间的所有数的异或值 1 #include 2 #include 3 using namespace std; 4 #define N 10005 5 #define L ls,x,mid.....
分类:
其他好文 时间:
2014-09-09 11:47:08
阅读次数:
243
菜鸟系列之C/C++经典试题(九)
寻找数组中出现的唯一重复的一个数...
分类:
编程语言 时间:
2014-09-07 12:22:15
阅读次数:
186
题目大意:
给出一个序列,有两种操作,一种是计算l到r的和,另一种是让l到r的数全部和x做异或运算。
做法:
很显然直接暴力是不可能的(但是这题刚刚出来的时候,很多人用暴力水过去了,后来加强的数据吧),又是两种操作,又想到了线段树。。但是这并不简单,异或操作该怎么处理?
异或是一种位运算,如果x的第j位是1,那么说明l到r的每个数的第j位都要反转,(0^1=1,1^1=0),如果是0,那么...
分类:
其他好文 时间:
2014-09-02 15:56:35
阅读次数:
255
1即计算出所给数中包含1的个数方法一:每一位分别异或(时间复杂度O(n)n代表数位数)函数功能:如果1的个数为奇数个,则返回1,如果1的个数为偶数个,则返回0。parity_check(unsigned x){int val=0;while(x){val^=x;//val 和x进行异或运算x>>=1...
分类:
其他好文 时间:
2014-09-01 19:06:53
阅读次数:
281
位运算位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。其中,按位取反运算符是单目运算符,其余均为双目运算符。位运算符的优先级从高到低,依次为~、&、...
分类:
编程语言 时间:
2014-08-26 13:16:36
阅读次数:
317
【问题】
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。 每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?
【代码】
#include
#include
#include
/*根据异或法的计算方式,每两个相异的数执行异或运算之后,结果为1;
每两个相同的数异或之后,结果为0,任何数与0异或,结果...
分类:
其他好文 时间:
2014-08-15 19:40:49
阅读次数:
227