gpt4 book ai didi

operators - 运算符 '<<' 和 '>>' 有什么作用?

转载 作者:IT王子 更新时间:2023-10-29 00:48:32 25 4
gpt4 key购买 nike

我在 http://tour.golang.org 上关注“GO 之旅” .表 15 有一些我无法理解的代码。它使用以下语法定义两个常量:

const (
Big = 1<<100
Small = Big>>99
)

我完全不清楚这意味着什么。我尝试修改代码并使用不同的值运行它以记录更改,但我无法理解那里发生了什么。

然后,它在表 24 上再次使用该运算符。它使用以下语法定义一个变量:

MaxInt uint64 = 1<<64 - 1

当它打印变量时,它会打印:

uint64(18446744073709551615)

在哪里uint64是类型。但我不明白在哪里18446744073709551615来自。

最佳答案

它们是 Go's bitwise shift operators .

Here很好地解释了它们如何为 C 工作(它们在多种语言中的工作方式相同)。基本上 1<<64 - 1对应于 2^64 -1, = 18446744073709551615.

这样想。在十进制中,如果您从 001(即 10^0)开始,然后将 1 向左移动,则最终得到 010,即 10^1。如果您再次移动它,您将以 100 结尾,即 10^2。所以向左移位相当于你移位的次数乘以10。

在二进制中是一样的,但在基数 2 中,所以 1<<64 表示乘以 2 64 次(即 2 ^ 64)。

关于operators - 运算符 '<<' 和 '>>' 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12425507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com