我理解逻辑和算术转换之间的区别。为什么每个都按照它的名字命名?这些名字的历史和背景是什么?
答案 0 :(得分:1)
位移可用于进行乘以2并除以2的算术运算。例如,如果您有五个(二进制为101)并将其向左移位两位(二进制为10100),则结果为20.因此,向左移位 n 位乘以2 名词 。同样,右移除了2 n (带截断)。
为了使算术移位与负数一起使用,您必须处理符号位。在二进制补码表示法中,高位表示负值。例如,在16位二进制补码中,二进制1000 0000 0000 0000(便于计数的空间)为-32,768。如果我们只将其向右移一位,则结果为0100 0000 0000 0000,即16,384。这是积极的,所以我们没有正确地除以两个。为了解决这个问题,算术移位会在符号位移位时复制。因此,1000 0000 0000 0000的算术右移是1100 0000 0000 0000,即-16,384。类似地,-20是1111 1111 1110 1100.算术右移两位给出1111 1111 1111 1011,即-5。 (但请注意,负数的算术右移使得结果远离零。例如,-3右移两位产生-1。因此算术向-∞转移。)
使用逻辑移位,您只需将位作为位。它们不是代表数字的二进制数字。您可能只是移动位来跟踪一些要处理的项目,其中1表示需要注意的项目,0表示某些项目不需要注意。在这种情况下,您不希望高位生成额外的1位。这些被称为逻辑移位,因为您只是将它们用于布尔逻辑目的 - 开启和关闭的组合以及它们的功能。
维基百科的网页位于arithmetic shift和logical shift。