应用位异或交换两个变量的值

本文介绍了如何使用位异或(^)运算符在Golang中交换两个变量的值。通过具体的代码示例展示了该方法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道在程序语言中都有 "^"表示异或,但是我们用到的很少,下面是以Golang语言为例,将a,b的值互换

package main

import "fmt"

//noinspection ALL
func main() {
   var a int = 2
   var b int = 4
   if ( a != b) {
      // 1.相当于a = a^b,其实就是(a = 10 ^ 100)
      a ^= b
      //2.相当于 b = b^a,根据第1步知道 a = a^b,那么下面的等式又可表示为 b =  b^b^a,其实一个数异或自己就是0,任何数和0异或就是他本身
      //此时就相当于b = 0^a,所以b = a,这里的a就是我们开始定义的 var a int = 2
      b ^= a
      //3.a = a^b  可以推导的是=>a = (a^b)^(b^b^a),因为根据第一步我们知道a = a^b 根据第2步我们知道b = b^(b^a),可以得到的结果就是
      //a = b,这里的b就是最初我们定义var b int = 4,
      a ^= b
      fmt.Println(a, b)
   }

}

见结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值