c++ - long long 在 32 位机器上的实现

标签 c++ c

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

最佳答案

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

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

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

长字乘法和除法可以从较小的乘法中构建,而无需进位标志的帮助。有时只是一点一点地进行操作会更快。

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

关于c++ - long long 在 32 位机器上的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330374/

相关文章:

c++ - 成员函数内存分配栈还是堆?

c++ - 将 VARIANT 从 COM 编码回 C++ 客户端

c++ - 如何使用 C++ 链接 `.lib` 库?

c - 在 C 中解码 Websocket 有效负载长度

c - 对于常量的平方或 sqrt,宏或内联函数哪个更好?

c++ - 将现有的 C++ 项目编译为 DLL

c++ - C++17 中复制构造函数的继承

c - 为什么这个小 C 程序在 ESP32 上会崩溃?

c - 将多维数组传递给函数

c - 为什么这对别人有效,对我却无效?