根据 c99 标准,long long
的大小应至少为 64 位。这是如何在 32 位机器中实现的(例如,2 long long
s 的加法或乘法)。还有,C++中的long long
等价物是什么。
最佳答案
C++ 中的等价物也很长。它不是标准要求的,但大多数编译器都支持它,因为它非常有用。
它是如何实现的?大多数计算机体系结构已经内置了对多字加法和减法的支持。他们不直接进行 64 位加法,而是使用进位标志和特殊的加法指令从两个 32 位加法构建一个 64 位加法。
减法也存在相同的扩展(在这些情况下进位称为借位)。
长字乘法和除法可以从较小的乘法中构建,而无需进位标志的帮助。有时只是一点一点地进行操作会更快。
有些架构根本没有任何标志(一些 DSP 芯片和简单的微 Controller )。在这些架构上,溢出必须通过逻辑操作来检测。这些机器上的多字算术往往很慢。
关于c++ - long long 在 32 位机器上的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330374/