我了解按位运算以及它们如何用于不同的目的,例如权限。但是,我似乎不明白位移运算符有什么用。我理解它们是如何工作的,但我想不出任何可能想要使用它们的场景,除非我想做一些非常快速的乘法或除法。使用位移位还有其他原因吗?
原因有很多,以下是一些:
- 假设您将黑白图像表示为位序列,并且您通常希望在此图像中设置单个像素。例如,您的字节偏移量可能是 x>>3,位偏移量可能是 x & 0x7,您可以通过以下方式设置该位: byte = byte | (1
- 实现处理可变长度位序列的数据压缩算法,例如霍夫曼编码。
- 您正在与某些硬件交互,例如串行通信设备,需要读取或设置一些控制位。
由于这些和其他原因,大多数处理器都具有位移和/或旋转指令以及其他逻辑指令(和/或/异或/非)。
从历史上看,乘法和除法的速度要慢得多,因为它们是更复杂的运算,而有些 CPU 根本没有这些运算。
另请参阅此处:您是否曾在实际项目中使用过位移位?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)