当前位置: 首页 > article >正文

Go语言中位清除运算符的应用场景

package main

import "fmt"

func main() {

	a := 5 //101
	b := 1 //001
	//100   ->   4
	fmt.Println(a, b)
	//位清除  当b为0的时候取a的值,当b为1的时候取0
	fmt.Println(a &^ b)
}

《Go语言圣经》里面有对此的描述,x = a &^ b,当b为0的时候取a的值,当b为1的时候取0

但作为初学者不太明白什么场景可以用到这个运算符?
Gpt是这么说的:

位清空运算符(&^)在 Go 语言中非常有用,它的主要作用是将操作数中对应于另一个操作数中 1 的位“清零”。下面介绍几个常见的应用场景:

清除标志位

在很多场景下,我们会使用一个整数来存储多个状态或标志位。使用 &^ 运算符可以方便地清除特定的标志位。
例如,如果某个变量的某些位代表不同的状态,当需要取消某个状态时,可以用 &^ 运算符将相应的位清零。

const flagA = 1 << 0 // 0001
const flagB = 1 << 1 // 0010
flags := flagA | flagB  // 同时设置 flagA 和 flagB,结果为 0011

// 清除 flagA 对应的位
flags = flags &^ flagA  // 结果变成 0010,即只保留 flagB

//也就是说,在实际应用中,当某个状态的开关状态是A和B的交集flags
//我如果想取消A的状态,则可以用位清除,&^A则可以把A的状态关闭,只保留B的状态(如果A的位置为0则仍然是关闭状态,如果为1,则结果转换成0,即关闭状态)


http://www.kler.cn/a/580635.html

相关文章:

  • Linux 内核自定义协议族开发:从 “No buffer space available“ 错误到解决方案
  • php虚拟站点提示No input file specified时的问题及权限处理方法
  • P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS
  • 【洛谷DFS算法】P1123取数游戏
  • 09 HarmonyOS NEXT 仿uv-ui Tag组件开发教程系列(三)
  • React基础之项目创建
  • 在线json转ArkTs-Harmonyos
  • C 语言数据结构(二):顺序表和链表
  • 项目管理工具 Maven
  • docker学习使用教程
  • 航空发动机叶片检测-三维扫描技术重构精密制造质量体系
  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)
  • 游戏行业研究系列报告
  • k8s面试题总结(十二)
  • 在mac中设置环境变量
  • 【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析
  • STM32 CAN模块原理与应用详解
  • MySQL 数据库常用命令
  • postgreSQL window function高级用法
  • Facebook 隐私保护技术的发展与未来趋势