很多编程语言使用 ~ 作为一元按位取反(NOT)操作符,Go 重用 ^ XOR 操作符来按位取反:

// 错误的取反操作
func main() {fmt.Println(~2)        // bitwise complement operator is ^
}// 正确示例
func main() {var d uint8 = 2fmt.Printf("%08b\n", d)        // 00000010fmt.Printf("%08b\n", ^d)    // 11111101
}

同时 ^ 也是按位异或(XOR)操作符。

一个操作符能重用两次,是因为一元的 NOT 操作 NOT 0x02,与二元的 XOR 操作 0x22 XOR 0xff 是一致的。

Go 也有特殊的操作符 AND NOT &^ 操作符,不同位才取1。

func main() {var a uint8 = 0x82var b uint8 = 0x02fmt.Printf("%08b [A]\n", a)fmt.Printf("%08b [B]\n", b)fmt.Printf("%08b (NOT B)\n", ^b)fmt.Printf("%08b ^ %08b = %08b [B XOR 0xff]\n", b, 0xff, b^0xff)fmt.Printf("%08b ^ %08b = %08b [A XOR B]\n", a, b, a^b)fmt.Printf("%08b & %08b = %08b [A AND B]\n", a, b, a&b)fmt.Printf("%08b &^%08b = %08b [A 'AND NOT' B]\n", a, b, a&^b)fmt.Printf("%08b&(^%08b)= %08b [A AND (NOT B)]\n", a, b, a&(^b))
}
    10000010 [A]00000010 [B]11111101 (NOT B)00000010 ^ 11111111 = 11111101 [B XOR 0xff]10000010 ^ 00000010 = 10000000 [A XOR B]10000010 & 00000010 = 00000010 [A AND B]10000010 &^00000010 = 10000000 [A 'AND NOT' B]10000010&(^00000010)= 10000000 [A AND (NOT B)]

go语言按位取反 | goland按位取反相关推荐

  1. c语言按位取反 补码,按位取反运算符,数值取反之后是反码,还是补码- -

    最佳答案 你的概念不正确,按位运算,只对内码进行操作,不管类型,而反码/补码是针对有符号整型的(符号位不变) 对负数按位取反,得到的是正数,它的符号位也会取反的 追问: 哦,内码是不是补码呢?-19的 ...

  2. c语言基础难关:按位取反

    按位取反 1.理解按位取反的前提 符号位 原码反码补码的相互转化 正数的相互转化 负数的相互转化 2.按位取反的具体逻辑 (1)得到该数的补码 (2)对补码取反,得到新的补码 (3) 对新补码反向求原 ...

  3. keil c语言中位取反,关于按位取反“~”的故事

    操作系统:WIN7 32位家庭版, XP 编译环境:C-FREE5.0 编译器:  标准C89(32位) 代码1: #include#includeint main(void) { /* unsign ...

  4. C语言基础 - 正负数按位取反公式推导

    1字节 = 8位 实例:~9 原码(二进制码):00001001 反码:00001001 补码:00001001 因为计算机以补码进行存储计算,正数的原码.反码.补码一致 1.原补码取反:111101 ...

  5. Go 语言 入门 基于 GoLand 2023.1 创建第一个Go程序

    文章目录 Go 语言 入门 go 语言是什么? go 入门 需要 学习 什么? Go 语言有 那些优势? Go 语言 与 Java 语言 对比 Go 语言 与Python 语言 对比 Go 语言 基于 ...

  6. go语言01SDK、GoLand开发工具下载和安装

    Go语言学习01:SDK.GoLand开发工具下载和安装,及测试第一个程序:输出hello world 半夜凌晨写的笔记,如果对你有帮助,加个关注或点赞哈感谢,吼吼~ Go语言的学习,开始安装软件就遇 ...

  7. 和IDEA一样好用的go语言IDE:Goland

    因为IDEA和Goland来自同一家非常有名的捷克公司:JetBrains 很好用,智能化程度高 最新版下载地址:http://www.jetbrains.com/go/?fromMenu 相关使用手 ...

  8. 可爱鱼os go语言环境 搭建+ goland安装激活

    目录 0 环境 1 参考网址 2 go环境搭建 1 下载 解压安装包 2 全局变量配置和验证 3 goland安装 配置 1 下载 解压安装包 2 添加go.desktop文件 4 激活goland ...

  9. C语言按位与 按位或 按位异或 按位取反

    与运算:& 两者都为1为1,否则为0 1&1=1,  1&0=0,  0&1=0,  0&0=0 或运算:| 两者都为0为0,否则为1 1|1 = 1,  1| ...

最新文章

  1. mysql的altertable_mysql 的 alter table 操作性能小提示
  2. linux 查看显卡信息
  3. J-LINK序列号修改
  4. linux下安装vmware tools的方法
  5. Mysql常用操作2
  6. STM32F10x 学习笔记4(CRC计算单元 续)
  7. 中英文字体对照 ueditor添加字体
  8. Android应用文本字体设置
  9. win7计算机事件查看器,win7事件查看器是什么,事件查看器概述
  10. ipone5 无法安装ipa软件
  11. 11 空间平面方程 : 参数方程、向量式方程、行列式方程、三点式方程、点法式方程、一般方程
  12. Android WebView点击返回键回到上一个html
  13. uniapp 截图或者生成海报
  14. iOS屏幕自动旋转 以及横屏模式打开APP出现的问题
  15. [LOJ#3119][Luogu5405][CTS2019]氪金手游(DP+容斥)
  16. 运营︱快速提高app日活的方法
  17. Android开发中的WMS详细解析
  18. AD更改原理图纸大小
  19. android订餐系统app、android购物商城系统app 手机端+服务器端 mysql数据库,界面简单,功能齐全 安卓购物商城 安卓在线订餐系统
  20. 三段式电流保护 Matlab仿真

热门文章

  1. 前端 node 使用 TSPL指令集操作 打印机不限品牌 (标签打印机,普通打印机)
  2. linux wc 命令详解,linux wc命令详解
  3. 三位数自动递增编号函数_excel中如何使用SUBTOTAL函数实现自动连续四位数编号...
  4. 恶搞小程序(好玩的游戏)
  5. java callable用法_使用Callable返回结果(译)
  6. 2s相机 android6,一加手机6对比小米MIX 2S拍照:同为双摄各有优势
  7. python实现淘宝自动回复_python实现代码审查自动回复消息
  8. B树、B-树、B+树、B*树 http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
  9. jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数
  10. 【Paper】【Compute Vision】Best Paper Awards in Computer Science (since 1996)