一尘不染

Go中的<< 和 >> 运算符

go

有人可以向我解释一下Go中<<和的用法>>吗?我想它类似于其他一些语言。


阅读 304

收藏
2021-11-07

共2个答案

一尘不染

简化定义仅<<用于“乘以 2”和>>“除以 2” - 以及它后面的数字是多少次。

所以n << x是“N倍2,X倍”。并且y >> z是“y 除以 2,z 次”。

例如,1 << 5是“1 乘以 2、5 次”或 32。32 >> 5而是“32 除以 2、5 次”或 1。

所有其他答案都给出了更具技术性的定义,但没有人真正直言不讳地提出来,我认为您可能想要那样。

2021-11-07
一尘不染

从规范来看,至少对于整数来说,它是一个二进制移位。例如,二进制 0b00001000 >> 1 将是 0b00000100,而 0b00001000 << 1 将是 0b00010000。


Go 显然不接受二进制整数的 0b 表示法。我只是用它来举例。十进制中,8>>1是4,8<1是16。左移1相当于乘2,右移1相当于除以2,余数舍去。

2021-11-07