根据c99标准,大小long long
应至少为64位.如何在32位机器中实现(例如,2 long long
s的加法或乘法).另外,long long
C++中的等价物是什么.
C++中的等价物也很长.它不是标准所要求的,但大多数编译器都支持它,因为它非常有用.
它是如何实现的?大多数计算机体系结构已经内置了对多字加法和减法的支持.它们不直接执行64位添加,但使用进位标志和一个特殊的add-instruction来从两个32位的加法构建64位加法.
减法也存在相同的扩展(在这些情况下,进位称为借位).
在没有进位标志的帮助下,可以通过较小的乘法构建长字乘法和除法.有时简单地一点一点地进行操作会更快.
有些架构根本没有任何标志(一些DSP芯片和简单的微型).在这些架构上,必须通过逻辑运算来检测溢出.这些机器上的多字算术往往很慢.
在IA32架构中,使用两个32位寄存器(eax和edx)实现64位整数.
C++存在特定于平台的等价物,您可以在可用的情况下使用stdint.h标头(boost为您提供一个).