zoukankan      html  css  js  c++  java
  • 异或

      在平常的编程中,很少用到算法(反正我是这样,只顾着实现业务需求了),所以,我的代码总的来说是毫无价值的。怎么才能让自己代码变得有点意思呢,今天给大家介绍个运算符"^",异或运算符。有的时候用点运算符的小技巧,可以让自己的代码“蓬荜生辉”喔!:-D

      首先,我先介绍一下,什么是异或运算符。简单点来说,异或就是相同为0,不同为1,它是32位二进制数使用的运算符,我们在实际使用中,计算的时候都是要转换成二进制的。下面,我用一个图来介绍什么是异或,大家一看就明白了。

                           

      相信大家现在可以明白异或了吧!

      下面我用一个简单的实例,通过比较,更清楚深入的了解异或。

      题目:请把两个整数进行交换。

      在我们初次学习Java的时候,进行两个数之间的交换,首先会想到使用临时变量,于是,方案一就是采用第三方变量实现交换。

    1         int a = 10;
    2         int b = 20;
    3         
    4         int temp = a;
    5         a = b;
    6         b = temp; 

      采用第三方变量实现是最简单也是最容易理解的,但是能不能不使用第三方变量呢?方案二就是通过数学上基本运算,实现了交换。

    1         int a = 10;
    2         int b = 20;
    3                 
    4         a = a + b; //a=30
    5         b = a - b; //b=10
    6         a = a - b; //a=20

      这个方法是不是很巧妙呢?但是!它是有缺点的,那就是如果a+b的值超出了int的范围,就会有数据溢出,所以,有没有更好的方法呢?当然有,异或运算符!下面方案三就是介绍异或运算符的巧妙使用。

    1         int a = 10;
    2         int b = 20;
    3         
    4         a = a ^ b;
    5         b = a ^ b; //b = a ^ b ^ b = a
    6         a = a ^ b; //a = a ^ b ^ a = b

      第三个方法是不是很赞呢!当然,展示给大家的只是很简单的例子,在实际应用中,还是需要仔细加慎重的去选择的。谢谢。

  • 相关阅读:
    Spring 整合Mybatis
    Spring 配置说明
    AutoCAD.Net/C#.Net QQ群:193522571 虚拟方法的使用
    VLAN帧格式详解
    内网安全体系建设工作思路
    IT公司常见的内网漏洞表格
    内网安全运营的逻辑体系架构
    域安全的基础知识
    利用DNS日志进行MySQL盲注
    Linux内存凭据提取mimipenguin
  • 原文地址:https://www.cnblogs.com/qwmzjn/p/secondzjn.html
Copyright © 2011-2022 走看看