我知道偏移量运算符会对数字进行乘法和除法。因此,当我有80 >> 3时,可以将80除以2、3倍来进行翻译。当我看到这个80 <<< 3时,我将其乘以2、3倍来转换它。但是我没有正确理解,因为我不明白:9 <<< 99 = 72,因为我期望9乘以2,99倍,所以9 *(2 ^ 99)。但是实际上不行,它行不通...。我读过不同的文章,但我仍然听不懂。
答案 0 :(得分:1)
关于移位的要记住的事情是,您的值仅具有有限的位数,并且(至少对于原始值类型而言)该位数将少于99。
实际上,如果在启用警告的情况下编译代码,则可能会看到如下警告:
`warning: shift count >= width of type [-Wshift-count-overflow]`
...就是编译器告诉您您要执行的操作会调用未定义的行为。您最有可能要移位的值是32位或64位长(取决于您的代码和/或要编译的计算机),因此向左移位比这还多的位是无效的。>