试图找到Knuth关于商和余数的讨论

问题描述 投票:2回答:1

我似乎记得曾经读过一篇关于计算整数商和余数的讨论中的一个tAOCP分册。我的记忆是他声称不可能在没有另一个的情况下计算一个,并且他认为结果应该都可供程序员使用。问题是大多数编程语言迫使程序员计算类似q = a / b然后r = a%b的东西,但是在引擎盖下CPUB做了两次相同的计算,这是一种浪费。

我刚刚在MMIX Volume Fascicle 1中搜索了第1.3.1节中关于DIV的描述,但我没有找到我似乎记得的讨论。

有人能告诉我他们是否回忆起类似的讨论,我可能会在哪里找到它?

integer-division knuth taocp mmix
1个回答
0
投票

以下可能是您正在寻找的 - 这是我在迄今为止发布的所有TAOCP和(预)分册中找到的唯一相关提及。 (这只是一个句子的一部分,而不是一个精心的讨论,但记忆可能很棘手。)从第1卷第1节,第1.3节(MMIX),特别是1.3.1'(MMIX的描述)。如您所知,在“算术运算”下,定义DIV运算使得DIV $X,$Y,$Z(如果$Z不包含零)将$X设置为包含$Y$Z中值的(floor)商,并同时将rR寄存器设置为保留其余部分。

后来,在“MMIX与现实”之下,第二点是:

商业机器通常缺乏对整数算术的支持。例如,当x为负或y为负时,它们几乎从不产生真商⌊x/y⌋和真余数x mod y;他们经常扔掉产品的上半部分。它们不将左右移位视为乘法的严格等价,除以2的幂。有时它们根本不实现硬件划分;当它们处理除法时,它们通常假设128位被除数的上半部分为零。这种限制使得高精度计算更加困难。

© www.soinside.com 2019 - 2024. All rights reserved.