zoukankan      html  css  js  c++  java
  • 浅谈“异或” 运算符

    异或运算符的符号为^,当对两个整数进行异或操作计算时,是对其相应的二进制数进行的异或运算。

    其规则为:对于每一二进制位,0^0 =0, 0^1=1, 1^0=1, !^1=0。

    可简单理解成:相同位为0,不同为为1(或两个数字相加,但不考虑进位)。

    因此,又常称为按位异或。

    异或运算具有如下几个特征:

    1.0^任何数 = 任何数;

    2.任何数 ^ 任何数 = 0;

    3.具有交换律:a^b = b^a;

    4.具有结合律:a^b^c = a^(b^c)。

    因此,有时会见到异或运算出现在如下两个场景中:

    1.不经过第三方变量直接交换两个整数的值。

     1 public class ExchangeNumber {
     2 
     3     public static void main(String[] args) {
     4 
     5         int a = 12;
     6         int b = 7;
     7         System.out.println("原数 a=" + a + " b=" + b);
     8         a = a ^ b;
     9         b = a ^ b;
    10         a = a ^ b;
    11         System.out.println("交换后的值为 a=" + a + " b=" + b);
    12     }
    13 
    14 }

    2. 在网络传输过程中,通过异或对数字进行简单加密,接收后相应解密。

    如:需要加密的数字为a,秘钥为b,则加密后的结果c=a^b;

    接收后,对c进行解密。c^b = a^b^b = a^(b^b) = a^0 = a。

  • 相关阅读:
    第十周进度条
    冲刺阶段第十天
    冲刺阶段第九天
    冲刺阶段第八天
    冲刺阶段第七天
    冲刺阶段第六天
    第一次冲刺阶段(十一)
    第一次冲刺阶段(十)
    第一次冲刺阶段(九)
    第一次冲刺阶段(八)
  • 原文地址:https://www.cnblogs.com/lwbqqyumidi/p/3547351.html
Copyright © 2011-2022 走看看