微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在LC3中计算模

如何解决在LC3中计算模

如何计算LC3中的N mod K? N来自内存位置x3100,K来自内存位置x3101,您想将N mod K的结果存储在x3102中

解决方法

如何计算LC3中的N mod K?

一种做模的方法是通过重复减法进行除法;这将产生商和余数(模)。接下来的N是除数,K是除数。

从0开始计数;该计数将计算我们可以从股息中减去除数的次数。

然后循环,只要被除数大于或等于除数,就从前一个除数中减去后者,将结果放回除数中,并且由于我们能够进行减法,因此将商加一。请注意,在循环的每个迭代中都会更新分红(每次迭代都会更小)。

此循环结束时,计数便是商,而(更新的)股息是不能减去的余数。 (余数将小于除数。如果为零,则除法为“偶数” /精确)。


此算法处理无符号数字(除数和除数)。通常可以通过取负数,然后执行无符号除法算法(并酌情取反)来适应带符号。


这可能是在没有乘法或除法的处理器上进行除法/求模的最简单方法。请注意,在病理情况下(65535/1),它将迭代65535次,这是很多迭代的结果。

对没有良好的内置除法运算的处理器进行整数除法的研究相当多。我相信,使用除法步长运算,我们可以完成16次迭代(针对16位字)的任何除法,这很复杂,当然,考虑到LC-3没有右移。 (这个想法是将除数的大块减去乘以2的乘方,即二进制的长除法。)此外,当除数已知为常数时,也有很多技巧(例如除以10或3)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。