为什么 Go 使用 ^ 而不是 ~ 来表示一元按位非?
Why does Go use ^ rather than ~ for unary bitwise-not?
大多数编程语言使用 ~
来表示一元按位非运算。相比之下,Go 使用 ^
:
fmt.Println(^1) // Prints -2
为什么 Go 的设计者决定打破常规?
因为 ^x 等同于 m ^ x,其中 m = "all bits set to 1" 表示无符号 x,m = -1 表示有符号 x。 Says so in the spec.
这类似于 -x 是 0 - x
大多数编程语言使用 ~
来表示一元按位非运算。相比之下,Go 使用 ^
:
fmt.Println(^1) // Prints -2
为什么 Go 的设计者决定打破常规?
因为 ^x 等同于 m ^ x,其中 m = "all bits set to 1" 表示无符号 x,m = -1 表示有符号 x。 Says so in the spec.
这类似于 -x 是 0 - x