rec*_*ive 22
你在乘法时应该使用*,而在你移位时应该使用<<.它们在数学上是等价的,但具有不同的语义含义.例如,如果要构建标志字段,请使用位移.如果要计算总计,请使用乘法.
Edi*_*enz 17
在没有通过发出左移指令优化*2调用的旧编译器上更快.这种优化非常容易检测,任何体面的编译器都可以.
如果它影响可读性,则不要使用它.始终首先以最清晰简洁的方式编写代码,然后如果遇到速度问题,请返回并进行配置并进行优化.
当您关注正在使用的数据的各个位时,会使用它.例如,如果要将单词的高位字节设置为0x9A
,则不会写入
n |= 0x9A * 256
Run Code Online (Sandbox Code Playgroud)
你写的:
n |= 0x9A << 8
Run Code Online (Sandbox Code Playgroud)
这使得您更清楚地使用位而不是它们所代表的数据.