转载 深度理解按位异或运算符 收藏

4.按位异或运算符^
  参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:
         0^0=0, 1^0=1, 0^1=1, 1^1=0
  例如:     10100001^00010001=10110000

                                    0^0=0,0^1=1  0异或任何数=任何数

                                    1^0=1,1^1=0  1异或任何数-任何数取反

                                                              任何数异或自己=把自己置0
  (1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。
          10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6
  (2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:
    a=10100001,b=00000110
    a=a^b;   //a=10100111
    b=b^a;   //b=10100001
    a=a^b;   //a=00000110
   (3),在汇编语言中经常是变量置零:

            xor   a,a

发表于 @ 2006年12月07日 22:19:00|评论(loading...)

新一篇: 函数调用的详细汇编及调试说明和解析多线程 | 旧一篇: 对于C++中:this指针的理解

用户操作
[即时聊天] [发私信] [加为好友]
人狗一半
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
人狗一半的公告
唉!不知道怎么今天想起自己也给有自己的博客了,也许是自己喜欢的专业有4,5年没做了,现在的这个工作也打算辞了,重新做自己喜欢做的事情! 自己是个不知道怎么推荐自己的人,所以还是写个博客让别人看吧。顺便记录下自己的点点滴滴!
文章分类
收藏
    Cbolg
    md5算法之c程序 md5算法描述
    一道考遍东北三省和青岛没有一人做出来的简单题目
    北斗星君的专栏
    疯狂的程序员
    蚂蚁的C/C++标准编程
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © 人狗一半