What does a caret before an int mean?

huangapple go评论75阅读模式
英文:

What does a caret before an int mean?

问题

我知道插入符号 ^ 表示按位异或,但是我看到一段 Go 代码,其中出现了以下内容:

input[0] = ^output[3]

当我尝试以下操作时:

^1 得到 -2
^2 得到 -3
等等...

请注意,这里的 ^ 并不是按位异或运算符,而是按位取反运算符。按位取反运算符会将操作数的每个位取反,即将 0 变为 1,将 1 变为 0。因此,^1 的结果是 -2,^2 的结果是 -3,以此类推。

英文:

I'm aware the caret symbol ^ means bitwise XOR
but I'm looking at a pice of Go code and I see things like

input[0] = ^output[3]

when I try for example:

^1 gives -2
^2 gives -3
etc..

答案1

得分: 3

从语言规范的"算术运算符"部分可以得知:

对于整数操作数,一元运算符+、-和^的定义如下:

+x                          等于 0 + x
-x    取反              等于 0 - x
^x    按位取反    等于 m ^ x,其中对于无符号的x,m = "所有位都设置为1",对于有符号的x,m = -1
英文:

From the "Arithmetic Operators" section of the language specification:

> For integer operands, the unary operators +, -, and ^ are defined as
> follows:
>
> +x is 0 + x
> -x negation is 0 - x
> ^x bitwise complement is m ^ x with m = "all bits set to 1" for unsigned x
> and m = -1 for signed x

答案2

得分: 1

作为一元运算符,它表示"按位取反"。

英文:

As a unary operator it means 'bitwise not'

huangapple
  • 本文由 发表于 2016年10月28日 22:31:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/40307373.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定