【发布时间】:2017-07-10 01:57:05
【问题描述】:
我有两个数字,X 和 Y。
Y 是单个无符号整数原语,例如long unsigned int。 (在这种情况下,在执行操作之前没有更大的原语向上转换。)
X由两个原语表示:X0与Y同类型,表示X的低位,X1同类型,表示X的高位。
X / Y 将始终使用与 Y 相同的类型来表示,即可以假设操作不会溢出。 (因为 X 是与 Y 相同类型的两个值的乘积,其中一个值小于或等于 Y。)
确定除法结果的有效方法是什么?
【问题讨论】:
-
只是一个想法。您可以使用它运行:
c = hi_x / y * 2 ^ 64 + lo_x / y;但您需要考虑hi_x / y和lo_x / y是否没有休息。现在想不出来。为时已晚。 -
我在您的其他主题中提供了类似问题的链接和解决方案(重复)
-
“高效方式” 速度高效?代码效率高?什么平台?平台是否包含有效的
unsigned除法和有效的unsigned乘法。unsigned long是两次unsigned宽度吗?发布您尝试过的内容,即使只是x/y以及在“效率”方面与替代代码相比如何。 -
你应该发布你尝试过的低效方法。