我在THUMB(ARM指令集)中使用了lsl和lsr,它們的工作方式與寄存器中的位數有關。我可以設置特定的位數來保持Python的邏輯轉換嗎?
在我的特殊情況下,正好是16位寄存器,但是這不是太重要,例如的目的,我會假裝他們只有4位。
基本上,他們的行爲是這樣的:
mov r0, #0x1011
lsl r0, #0x1
的MOV將設置r0至1000,然後LSL將轉移他們,而是因爲裏面R0數量已經4位,並且,正如我剛纔所說我們假裝我們正在處理4位寄存器,該位丟失,並且r0將變爲#0x0110。
基本上發生的是,對於某些東西是n位,n個最重要的位丟失,其餘的值如預期的那樣移位,並且0被添加以填充最低有效位。
這可能有一個名字,對不起,我不知道它是什麼,但希望是什麼,我指的是非常明顯的。
我可以用Python的< <運營商的工作,我需要這樣的事情發生。實際上,我需要分裂出一個16位數字轉化成其最顯著3位,下一個最顯著2位等
有一個簡單的方法來處理這一個已經建成的Python?我知道一個辦法做到這一點,但不是與困擾,我想這將會是值得懷疑這樣的一個功能是內置的。
感謝。
這是一個右移,而不是左移。 –
@MarkRansom是的,是的。 OP說他想「將一個16位數字分成......」你將一個數字分成右邊的位域,而不是左移。我只能假設前面提到的彙編語言代碼使用左移,然後右移而不是掩蔽。 – zwol
@Zack - 是的。例如,爲了獲得第四和第五位,這個想法是使用lsl去除最重要的位,並且使用lsr。 – Kevin