我假设使用汇编语言(ARM 6)将一个整数(例如42)减半,可以使用逻辑右移来生成21但是有人可以解释为什么21可以减半给我10.5?我不知道发生了什么事情"在幕后"处理小数值。
更新
我想真正的问题是:是用于除法的LSR还是只是向右移位?如果是后者那么Logical Shifts的应用是什么?
答案 0 :(得分:3)
整数除法不能产生十进制/浮点数。如果需要该结果,则必须将数字转换为浮点数,然后使用浮点除法指令。事实证明,浮点数比整数有totally different representation in binary,因此,移位不会对浮点数起作用。
是用于除法的LSR还是只是向右移位?
为什么不两者兼而有之? LSR意在根据名称暗示移位。向右移位位与无符号整数除以2相同(向右移动十进制数与除以10相同)。
如果是后者那么Logical Shifts的应用是什么?
逻辑转换的应用很多。 Here是几个例子。
答案 1 :(得分:1)
LSR只是将位移位到右侧(逻辑移位)。如果你的号码是无符号的,你可以使用LSR for div 2。 但是如果需要将2除以有符号数,则应使用ASR(算术移位)。