为什么 Go 使用 ^ 而不是 ~ 来表示一元按位非?

问题描述 投票:0回答:2

大多数编程语言使用

~
来表示一元按位非运算。相比之下,Go 使用
^
:

fmt.Println(^1)  // Prints -2

为什么 Go 设计者决定在这里打破惯例?

go syntax operators conventions
2个回答
12
投票

因为 ^x 等价于 m ^ x,其中对于无符号 x,m =“所有位设置为 1”,对于有符号 x,m = -1。 规范中是这么说的

这类似于 -x 是 0 - x


0
投票

^
运算符类似于
+
-
运算符。例如:

+x == +0x0 + x
+x ==  0x0 + x

-x == -0x0 - x
-x ==  0x0 - x

^x == ^0x0 ^ x
^x ==  0xF ^ x

所以

^0 ^ x
等于
^x
。因为
0
不会更改
^
操作中的值,其方式类似于
0
不会更改
+
-
操作中的值。

© www.soinside.com 2019 - 2024. All rights reserved.