【发布时间】:2013-12-12 22:28:53
【问题描述】:
我在 THUMB(ARM 的指令集)中使用了一些 lsl 和 lsr,它们的工作方式与寄存器中的位数有关。
在我的特殊情况下,它恰好是 16 位寄存器,但这并不过分重要,出于示例的目的,我将假设它们只有 4 位。
基本上,他们的行为是这样的:
mov r0, #0x1011
lsl r0, #0x1
mov 会将 r0 设置为 1000,然后 lsl 会将它们移位,但是因为 r0 内的数字已经是 4 位,而且,正如我之前所说,我们假装我们正在使用 4 位寄存器,那个位是丢失,r0 会变成#0x0110。
基本上发生的情况是,将某物 lsl n 位,丢失 n 个最高有效位,其余值按预期移动,并添加 0 以填充最低有效位。
这可能有一个名字,对不起,我不知道它是什么,但希望我所指的足够清楚。
我正在使用 Python 中的
有没有一种简单的方法来处理这个已经内置在 Python 中的问题?我知道一种方法,但与其为此烦恼,我认为值得询问是否内置了这样的功能。
谢谢。
【问题讨论】:
标签: python bit-manipulation bit shift