如何在LC3中计算N mod K?N来自内存位置x3100,K来自内存位置x3101,您希望将N mod K的结果存储在x3102中
发布于 2020-10-31 23:37:18
在LC3中如何计算N
K?
求模数的一种方法是通过重复减法进行除法;这将产生商和余数(模数). ,下面的N是被除数,K是除数。
从0开始计数;这个计数将计算从被除数中减去除数的次数。
然后循环,只要被除数大于或等于除数,从前者中减去后者,将结果放回除数中,由于我们能够进行减法,因此将商加1。请注意,在循环的每次迭代中,都会更新被除数(每次迭代都会变小)。
当这个循环结束时,计数是商,(更新后的)被除数是剩余的不能减去的余数。(余数将小于除数。如果是零,除法是“/exact”)。
此算法处理无符号数(被除数和除数). 它可以修改为有符号的,通常是通过否定负数,然后执行无符号除法算法(并根据需要否定答案)。
这可能是在没有乘法或除法的处理器上进行除法/模运算的最简单方法。让我们注意到,在病理情况( 65535 /1)中,它将迭代65535次,这是大量的迭代。
https://stackoverflow.com/questions/64622904
复制相似问题