有了x= 5*x/16,这等于:
MOV r0, r0, LSR #4 ADD r1, r0, r0, LSL #2
请详细解释我现在所理解的是第一行基本上是x/16。然后在第二行中,我对到底发生了什么感到困惑。我相信r0, LSL #2使它成为4x/16,但我不明白ADD r1, r0完全做了什么。我认为它添加了一个x使它成为5x/16,但我不确定是如何做到的。
x/16
r0, LSL #2
4x/16
ADD r1, r0
x
5x/16
jdg4fx2g1#
初等代数。2^4 = 16。所以右移是一个无符号的除以16。如果我有一个十进制数3000,想除以100,我该怎么做?右移2是吗?100 = 10^2所以移位3000〉〉2是30,也就是3000/100。(5)= 4 + 1 = 2^2 + 1。(5)=(4+1)=(4)+(1)就像x〉〉4被16除一样x〈〈2是a乘以4。(x4)+(x1)=(x〈〈2)+ x。初等代数乘五更容易看到与长乘法(也从小学,基地2是容易得多,比基地10)。取四位ABCD乘以五0101。
abcd * 0101 ===========
在小学你会举个例子
abcd * jk ======= mmmm this is k times all of abcd nnnn this is j times all of abcd, because j is in the tens position 10^1 it is shifted left one
以2为基数,你只需要与0或1相乘。
abcd * 0101 =========== abcd 0000 + abcd ==========
所以如果你想乘以十进制的6,那么它就是二进制的0110,所以你x*6 =(x〈〈2)+(x〈〈1)10乘以10,1010二进制10 x =(x〈〈3)+(x〈〈1)或......((x〈〈2)+x)〈〈1)(5乘以2)。
1条答案
按热度按时间jdg4fx2g1#
初等代数。2^4 = 16。所以右移是一个无符号的除以16。如果我有一个十进制数3000,想除以100,我该怎么做?右移2是吗?100 = 10^2所以移位3000〉〉2是30,也就是3000/100。
(5)= 4 + 1 = 2^2 + 1。(5)=(4+1)=(4)+(1)
就像x〉〉4被16除一样x〈〈2是a乘以4。
(x4)+(x1)=(x〈〈2)+ x。
初等代数
乘五更容易看到与长乘法(也从小学,基地2是容易得多,比基地10)。
取四位ABCD乘以五0101。
在小学你会举个例子
以2为基数,你只需要与0或1相乘。
所以如果你想乘以十进制的6,那么它就是二进制的0110,所以你x*6 =(x〈〈2)+(x〈〈1)
10乘以10,1010二进制10 x =(x〈〈3)+(x〈〈1)或......((x〈〈2)+x)〈〈1)(5乘以2)。