zoukankan      html  css  js  c++  java
  • xor异或逻辑运算

    简略记忆:同0异1

    1.由于0^0=0 0^1=1 所以,0^任何数 = 任何数
    2.由于1^0=1 1^1 =0所以,1^任何数 = 任何数取反
    3.任何数^任何数 = 0;
    4.用于将特定的位反转,如对10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。原因见(2)
    5.通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。
    例如 a= 10100001 
    b= 00000111
    a=a^b; //a=10100110
      //此步操作是将a b原值的相同位记录为0,不同位记录为1.
      //并保存在a中,b值此步并没有发生变化
      //由于1^任何数 = 任何数取反 0^任何数 = 任何数
    b=b^a; //b=10100001
      //a中用1表示原值中对应位不同的部分
      //做异或操作是将b中与(原a)中相同的部分保留,与(原a)中不同的部分取反
      //即将b编程原来的a
    a=a^b //a=00000111
      //由于此时的a表示异同,b表示原来的a
      //同理第二部步可获得原b值,赋给a即可实现转换
    6.异或运算的特点:a两次异或同一个数b(a=a^b^b)仍然为原值a。//参考(5)即可知。
    7.异或是可交换的:a^b = b^a
  • 相关阅读:
    es6 可迭代对象
    前端模板
    快速排序
    parseHTML2Vnode
    最大并发请求
    选择排序
    window命令
    Asp.net问题集锦
    ExtJs5.1.1使用中问题集锦
    Sql Server问题集锦
  • 原文地址:https://www.cnblogs.com/thewaytomakemiracle/p/5019678.html
Copyright © 2011-2022 走看看