异或的妙用

原创 2007年09月21日 10:05:00

整理自csdn论坛里的一个帖子!

有两个文件A,B。
A文件中存储了N个整形数(N可能很大,里面的数可以重复)。
B文件比A文件少了一个数,其他的全部相同,但顺序不一样。
设计一个方法,判断B文件中比A文件少了哪个数。

思路:     int A = A1^A2^A3^...^An
              int B = B1^B2^B3...^Bn-1;
               那么所求的那个数
              int c= A^B.

程序:


#include <stdio.h>
void main()
{
    int A[]={1,2,3,4,5,6,7,8,9,10 ,9,8,7,6,5,4,3,2,1};
    int B[]={1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,9};
 
    int x = 0;
    for( int i=0;i<19;++i)
    {
      x ^= A[i];
   }
   for( int j=0;j<18;++j)
   {
      x ^=B[j];
   }
     printf("%d/n",x);
}

异或还可用来交换两个整数的值时不用第三个参数.

如a=11,b=9.以下是二进制
a=a^b=1011^1001=0010;
b=b^a=1001^0010=1011;
a=a^b=0010^1011=1001;
这样一来a=9,b=11了。

比较下题:

1~1001放在1000大小的数组里,然后判断哪个数没有存进去。

思路:因为该题的数字较小,不考虑溢出,可分别求和将1+2+.....+1001=sum1, a[0]+a[1]+......+a[999]=sum2;然后相减求差,sum1-sum2的结果就是没有存进去的数.由于上题的数字可能很大需要考虑溢出问题,所以用异或法最优.

版权声明:本文为博主原创文章,转载请注明出处。

异或操作妙用

前几天下班途中跟同事聊到了一道面试题,大意是,给你1-1000个连续自然数,然后从中随机去掉两个,再打乱顺序,要求只遍历一次,求出被去掉的两个数。 这题其实挺为面试者的,因为要求1分钟内说出解法...
  • u011487593
  • u011487593
  • 2014年09月21日 20:13
  • 1088

异或用处大2

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结...
  • qq_27231343
  • qq_27231343
  • 2016年08月09日 22:16
  • 290

Java学习-异或应用

异或应用package basis.day02; /** * 异或的重要用途:转换m,n的值 * @author LENOVO * */ public class TestXor { p...
  • wangligong
  • wangligong
  • 2016年07月20日 23:26
  • 1040

异或的妙用

异或 ^ ,相同为0,不同为1.通过这个性质,我们能得出许多巧妙的解决问题的办法. 异或的一些性质: A^A=0; 0^A=0; A^B^A=B;(满足交换律)...
  • ice110956
  • ice110956
  • 2013年10月15日 12:12
  • 1213

异或(^)运算的妙用

现有1,1,2,2,3,3,....,n,n共2n个数,其中各个数字排列的顺序是任意的,是杂乱放的,即没有排序。现在删除了其中的一个数剩下了2n-1个数,求删除的那个数?可能大多数人的第一想法是:用2...
  • delphiwcdj
  • delphiwcdj
  • 2009年10月26日 11:27
  • 1131

异或(^)运算的妙用

现有1,1,2,2,3,3,....,n,n共2n个数,其中各个数字排列的顺序是任意的,是杂乱放的,即没有排序。现在删除了其中的一个数剩下了2n-1个数,求删除的那个数?可能大多数人的第一想法是:用2...
  • subo86
  • subo86
  • 2009年10月27日 11:00
  • 581

异或操作符的妙用

题目描述: 有N个数,这N个数中只有2个数是只出现一次,剩下所有的数都会出现2次。问题是,如何高效的找出那2个只出现一次数 ? 时间复杂度O(n),空间复杂度O(1). ---------------...
  • jeiwt
  • jeiwt
  • 2010年05月26日 17:48
  • 1659

异或运算符(xor) 的妙用

id值时间值    我要实现的功能是当中 id值或是时间值对应的文本框中有一个为空时就报错,但可以全为空一般的做法是: $id = $_POST[id];$t = $_POST[time]; //传统...
  • vancekq
  • vancekq
  • 2009年11月04日 11:02
  • 698

js与(&&)或(||)运算符妙用

初次见到这样语句var a=a || []  你认为他们是实现什么功能呢?下面简单说明这段代码的作用。   1.逻辑或运算符||: 当运算符||的两个运算数都是布尔值,它对这两个运算...
  • lwj734114646
  • lwj734114646
  • 2017年01月04日 14:01
  • 270

关于异或的一些东西和应用

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结...
  • rockpk008
  • rockpk008
  • 2015年11月22日 23:22
  • 1022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:异或的妙用
举报原因:
原因补充:

(最多只允许输入30个字)