1 << i 是什么意思,我该如何使用它?

What does 1 << i means and how can I use it for?

我看到有人用 1 << i,有时 1 << n。这是什么以及如何使用它?

当您想到二进制表示形式的值时,它会将值向左移动 n 次。 n 将在右侧添加零位数字。

所以 1b 变成 100b 等等 如果 n == 2.

如果按十进制看,移位一次(n==1)相当于乘以2。移位两次等于乘以4等运算。

一个优点是位移比 "real" 整数乘法更快。

通常在计算中你会看到所谓的位域,其中每个位打开或关闭某些东西,或者有一些特殊的含义。

例如,在微控制器上,寄存器的每一位都可能代表连接到 LED 的数字输出。

在那里,该符号可用于创建一个 "mask",表示程序员想要操作的位数 (i)。

例如

x &= ~(1<<4) 清除第 4 位,而 x |= (1<<4) 将设置相同的位。

请注意,如果 i 过高或运算的左侧为负值,则移位可能会在某些系统上导致未定义的行为。