Bit manipulation 除了快速数学之外,还有什么好的理由使用位移位吗?

Bit manipulation 除了快速数学之外,还有什么好的理由使用位移位吗?,bit-manipulation,bit-shift,Bit Manipulation,Bit Shift,我了解按位操作以及它们在不同用途(例如权限)中的用途。然而,我似乎不明白位移位运算符的用途。我理解它们是如何工作的,但我想不出任何可能使用它们的场景,除非我想做一些真正快速的乘法或除法。使用位移位还有其他原因吗?正如您所指出的,左移位与2的乘法是一样的。至少在我们讨论无符号量时是这样。有符号数量“左移”的含义是。。。语言依赖 在现代编译器中,编写“i=x*2”和“i=x实际上没有什么区别有很多原因,下面是一些原因: 假设您将黑白图像表示为一个位序列,并且希望在该图像中一般设置一个像素。例如,您的

我了解按位操作以及它们在不同用途(例如权限)中的用途。然而,我似乎不明白位移位运算符的用途。我理解它们是如何工作的,但我想不出任何可能使用它们的场景,除非我想做一些真正快速的乘法或除法。使用位移位还有其他原因吗?

正如您所指出的,左移位与2的乘法是一样的。至少在我们讨论无符号量时是这样。有符号数量“左移”的含义是。。。语言依赖


在现代编译器中,编写“i=x*2”和“i=x实际上没有什么区别有很多原因,下面是一些原因:


  • 假设您将黑白图像表示为一个位序列,并且希望在该图像中一般设置一个像素。例如,您的字节偏移量可能是x>>3,您的位偏移量可能是x&0x7,您可以通过:byte=byte|设置该位(1在许多地方,位移位运算在数值计算中的使用范围之外经常被使用。例如,棋盘游戏中常用的一种数据结构,用于棋盘表示。一些最强大的国际象棋引擎使用这种数据结构主要是为了加快速度和方便移动生成和评估。这些程序大量使用位运算,而位移位运算专门用于许多上下文中,例如查找位掩码、在板上生成新的移动、非常快速地计算对数等。甚至还有非常高级的数值计算,可以通过巧妙地使用位运算来优雅地完成。查看位旋转hacks-很多算法都使用移位运算符。位移位运算通常用于设备驱动程序编程、编解码器开发、嵌入式系统编程等。

    移位允许访问变量中的特定位。表达式
    (n>>p)和((1个可能的重复项的可能重复项的