有人可以向我解释一下Go中<<和的用法>>吗?我想它类似于其他一些语言。
简化定义仅<<用于“乘以 2”和>>“除以 2” - 以及它后面的数字是多少次。
<<
>>
所以n << x是“N倍2,X倍”。并且y >> z是“y 除以 2,z 次”。
n << x
y >> z
例如,1 << 5是“1 乘以 2、5 次”或 32。32 >> 5而是“32 除以 2、5 次”或 1。
1 << 5
32 >> 5
所有其他答案都给出了更具技术性的定义,但没有人真正直言不讳地提出来,我认为您可能想要那样。
从规范来看,至少对于整数来说,它是一个二进制移位。例如,二进制 0b00001000 >> 1 将是 0b00000100,而 0b00001000 << 1 将是 0b00010000。
Go 显然不接受二进制整数的 0b 表示法。我只是用它来举例。十进制中,8>>1是4,8<1是16。左移1相当于乘2,右移1相当于除以2,余数舍去。