zoukankan      html  css  js  c++  java
  • 不用第三个变量交换两个变量的值

    不借助第三个变量交换两个整数的值

    假设两个数x和y,则有:

    方法1,算术运算(加减):

    x=x+y;  //x暂存两数之和
    y=x-y;  //y为两数之和减去y,即原来的x
    x=x-y;  //x为两数之和减去现在的y(原来的x),变成原来的y

    方法2,逻辑运算(异或):

    x^=y; //x先存x和y两者的信息
    y^=x; //保持x不变,利用x异或反转y的原始值使其等于x的原始值
    x^=y; //保持y不变,利用x异或反转y的原始值使其等于y的原始值

    关于异或运算要牢记两个原则:

    任何一位二进制数同 1 异或都会变成另外一个(0 同 1 异或的结果是 1,1 同 1 异或的结果是 0)
    任何一位二进制数同 0 异或都保持不变(0 同 0 异或的结果是 0,1 同 0 异或的结果是 1)

    技术是一张窗户纸,一捅就破,come!
  • 相关阅读:
    性能分析
    单例模式
    装饰者模式
    开发Chrome Extension截取你微博的帐号密码
    201703-3 markdown
    201612-3 权限查询
    201609-3 炉石传说
    201604-2 俄罗斯方块
    201604-3 路径解析
    201512-1 数位之和
  • 原文地址:https://www.cnblogs.com/adeng-x/p/6525364.html
Copyright © 2011-2022 走看看