我看到有人用1 <<i,有时用1 <<n。这是什么,我该如何使用它?
当您考虑二进制表示中的值时,它会将值向左移动n
次。n
个零位数字将添加到右侧。
所以1b
如果n == 2
就变成了100b
等.
如果你从十进制来看,移动一次(n==1
)相当于将值乘以2。换档 2 次等于 4 次操作,依此类推。
一个优点是位移可能比"真正的"整数乘法更快。
在计算中,您经常会看到所谓的位字段,其中每个位都打开或关闭某些东西,或者具有某种特殊含义。
例如,在微控制器上,寄存器的每个位可能代表连接到LED的数字输出。
在那里,符号可以用来创建一个"掩码",表示程序员想要操作的位号(i
)。
例如
x &= ~(1<<4)
清除第 4 位,而x |= (1<<4)
将设置相同的位。
请注意,如果i
过高或操作左侧具有负值,则移位可能会导致某些系统上出现未定义的行为。