二进制字节位的几个操作例子:
0110 & 1011 = 0010 // 与 AND 都为 1
0110 | 1011 = 1111 // 或 OR 至少一个为 1
0110 ^ 1011 = 1101 // 异或 XOR 只能一个为1
0110 &^ 1011 = 0100 // 位清除 AND NOT 清除标志位, 不都为1 a &^ b 的意思就是 清零a中,ab都为1的位
^0001 0100 = 1110 1011 // ^作一元运算符表示是按位取反
fmt.Printf("%b\r\n", 1<<3) 1000 // << 左移
fmt.Printf("%b\r\n", 255>>3) 11111 // >> 右移
常见场景函数
判断指定位的数字是否是1
// 获得num数字二进制时,bit位的值
func valueAtBit(num, bit int) int {
return (num >> (bit - 1)) & 1
}
fmt.Printf("%b\r\n", 8) // 1000
fmt.Printf("%b\r\n", valueAtBit(8, 3)) // 0
fmt.Printf("%b\r\n", valueAtBit(8, 4)) // 1
进制的表示
fmt.Printf("%d\r\n", 0b10) // 二进制的 2
fmt.Printf("%d\r\n", 012) // 八进制的 10
fmt.Printf("%d\r\n", 12) // 十进制的 12
fmt.Printf("%d\r\n", 0x12) // 十六进制 的 18
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2015-02-17 HTTP TCP UDP Socket 关系的几个经典图
2015-02-17 golang rpc 简单范例
2015-02-17 golang fatal error: all goroutines are asleep - deadlock!
2013-02-17 Go语言中的数组(array)和数组切片(slice)