英文:
Why does Go use ^ rather than ~ for unary bitwise-not?
问题
大多数编程语言使用~
来表示一元位非操作。相比之下,Go语言使用^
:
fmt.Println(^1) // 输出 -2
为什么Go语言的设计者决定在这里与传统不同呢?
英文:
Most programming languages use ~
to represent a unary bitwise-not operation. Go, by contrast, uses ^
:
fmt.Println(^1) // Prints -2
Why did the Go designers decide to break with convention here?
答案1
得分: 10
因为对于无符号的 x,^x 等同于 m ^ x,其中 m = “所有位都设置为1”,对于有符号的 x,m = -1。在规范中有说明。
这类似于 -x 等于 0 - x。
英文:
Because ^x is equivalent to m ^ x with m = "all bits set to 1" for unsigned x and m = -1 for signed x. Says so in the spec.
It's similar to how -x is 0 - x
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论