Binary 执行位移位操作(asr、lsl、lsr)
我试图用手计算这些位移位操作,但我不知道该怎么做。ARM说明如下: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 对于这一次,我不
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
)。这对于无符号数的乘法和除法(无余数)或位流运算非常有用
现在,要解决您的任务:
- 将十六进制值转换为位表示形式
- 应用逻辑移位或算术移位
- 将位表示转换为十六进制表示
10100000
变为11010000
,而移位2将使10100000
变为11101000
。因此,在某种程度上,你可以说,1
s在算术移位中从左移位。