Binary 执行位移位操作(asr、lsl、lsr)

Binary 执行位移位操作(asr、lsl、lsr),binary,hex,bit,bit-shift,Binary,Hex,Bit,Bit Shift,我试图用手计算这些位移位操作,但我不知道该怎么做。ARM说明如下: ldr r0, =0XCAFEBABE asr r0, r0, 9 我知道asr意味着算术右移,它相当于将数字除以或乘以2 另外两个我不知道怎么做的是: ldr r0, =0XCAFEBABE lsl r0, r0, 11 对于这一个,我知道如何做逻辑左移位,但我不确定它如何与移位11位一起工作 最后, ldr r0, =0XCAFEBABE lsr r0, r0, 6 对于这一次,我不

我试图用手计算这些位移位操作,但我不知道该怎么做。ARM说明如下:

ldr    r0, =0XCAFEBABE
asr    r0, r0, 9
我知道asr意味着算术右移,它相当于将数字除以或乘以2

另外两个我不知道怎么做的是:

ldr    r0, =0XCAFEBABE
lsl    r0, r0, 11
对于这一个,我知道如何做逻辑左移位,但我不确定它如何与移位11位一起工作

最后,

ldr    r0, =0XCAFEBABE
lsr    r0, r0, 6
对于这一次,我不确定什么是逻辑右移

逻辑移位和算术移位的区别在于后者保留最高位

算术移位的这种行为对于有符号数字不更改登录非常有用。如果最高位为
1
-表示负数-
1
s在右移(
asr
)时移入,最高位在左移(
asl
)时锁定在
1
)。如果最高位为
0
,则表示正数的
0
将被锁定,并且
0
将从左侧移入

在逻辑移位中,
0
s在两个方向上移位(
lsl
lsr
)。这对于无符号数的乘法和除法(无余数)或位流运算非常有用

现在,要解决您的任务:

  • 将十六进制值转换为位表示形式
  • 应用逻辑移位或算术移位
  • 将位表示转换为十六进制表示

当你说1右移是什么意思?这是否意味着只有一个移位?算术右移1将使
10100000
变为
11010000
,而移位2将使
10100000
变为
11101000
。因此,在某种程度上,你可以说,
1
s在算术移位中从左移位。