程序语言中的取余是如何实现的?

RT。各种语言用的算法一样吗? 另外, 如果除数非常非常大, 会不会导致计算的速度也非常慢呢? 目前已知RNG和Hash table 中都会大量用到取…
关注者
196
被浏览
64,658

12 个回答

并行除法器电路

80x86汇编里面除法指令div(idiv).

8位运算结果,商放在累加器低位AL,余数放在累加器高位AH。

16位运算,商存放在累加器AX,余数放在数据寄存器DX里。and so on。

底层运算里,余数和商是同时算出来的。

计算余数不是一个单独的功能。

这是硬件逻辑的工作。

补:

汇编的除法本质是重复的减法

减到最后被除数不够除数减了,剩下的自然就是余数

具体的步骤可以看这篇文章

汇编除法原理

————————————

计算机一次也就只能处理32/64位二进制数运算。

除数大了要将计算拆分,当然会慢。

”如果除数非常非常大, 会不会导致计算的速度也非常慢呢?“

我想是的。

————————————

取余数在密码学理论上使用极为普遍。

实际这些功能多数直接由硬件电路实现,非常快。