2015-11-05 127 views
2

奇数我假定使用汇编语言(ARM 6)减半的整数,例如42,逻辑右移可用于产生21但可能有人解释然后如何21可以减半给我10.5?我不确定“幕后”处理小数值的情况。分割用汇编语言

更新

我想真正的问题是:是LSR用于部门或只是位右移?如果是后者,那么逻辑换档的应用是什么?

+0

一旦要使用浮动点,所述计算机不再使用正常寄存器('eax','ebx'等)。相反,它使用浮点寄存器,所以搜索“浮点汇编”可能会帮助你。 (我从来没有使用过浮点寄存器,所以不幸的是我不能很容易地将它作为答案,但祝你好运!) – Numeri

+0

你可以切换到定点并在零指令中执行该除法,但是这取决于进一步的代码来解释这个数字的意图。 – harold

回答

3

一个整数除法不能导致十进制/浮点数。如果你想得到这个结果,你必须将数字转换为浮点数,然后使用浮点除法指令。事实证明,浮点数比整数有totally different representation in binary,因此,移位对浮点数不起作用。

是LSR打算分割还是只是将位移到右边?

为什么不能两者兼而有之? LSR旨在按照名称的含义转换位。结果向右移位与无符号整数除2相同(与向右移十进制数相同,除以10)。

如果是后者,那么Logical Shifts的应用是什么?

有逻辑的变化很多应用。 Here是几个例子。

+0

但是我不明白在将奇数除以2时做无符号整数除法的要点。 – tommyd456

+0

它被称为整数除法,你在学校做过:结果是商和你刚刚移动的位是余数。 – m0skit0

1

LSR只是右移位(逻辑移位)。如果你的号码是无符号的,你可以使用2的LSR作为div。 但是如果你需要将div除以2来得到有符号数,你应该使用ASR(算术移位)。