长期在32位机器上实现

cha*_*par 17 c c++

根据c99标准,大小long long应至少为64位.如何在32位机器中实现(例如,2 long longs的加法或乘法).另外,long longC++中的等价物是什么.

Nil*_*nck 14

C++中的等价物也很长.它不是标准所要求的,但大多数编译器都支持它,因为它非常有用.

它是如何实现的?大多数计算机体系结构已经内置了对多字加法和减法的支持.它们不直接执行64位添加,但使用进位标志和一个特殊的add-instruction来从两个32位的加法构建64位加法.

减法也存在相同的扩展(在这些情况下,进位称为借位).

在没有进位标志的帮助下,可以通过较小的乘法构建长字乘法和除法.有时简单地一点一点地进行操作会更快.

有些架构根本没有任何标志(一些DSP芯片和简单的微型).在这些架构上,必须通过逻辑运算来检测溢出.这些机器上的多字算术往往很慢.


Edo*_* A. 9

在IA32架构中,使用两个32位寄存器(eax和edx)实现64位整数.

C++存在特定于平台的等价物,您可以在可用的情况下使用stdint.h标头(boost为您提供一个).