Windows 如何处理无符号 64 位整数?

Posted

技术标签:

【中文标题】Windows 如何处理无符号 64 位整数?【英文标题】:How does Windows handle unsigned 64bit integers? 【发布时间】:2016-06-28 14:26:45 【问题描述】:

我想知道,一台仅限于 64 位的机器如何处理复杂的数学和计算,其中涉及的数字大于它可以“想象”的更大数字?例如,一个 8 位系统如何添加大于 255 的数字?为什么不会导致溢出?

我主要谈论的是基于 Windows 的系统,而不是任何特定的编程语言,我确实知道一些编程语言,例如 Python 可以毫无问题地处理有符号和无符号整数的接近无限位。

谢谢。

-主芯片

【问题讨论】:

在软件中“简单地”模拟。由于人类可以处理超出手指的数字,因此软件可以使用更多字节来存储更多位,并在右侧的 MSB 上传播位。假设您在 8 位 µP 中使用 16 位: 人类如何处理大于 9 的数字? 【参考方案1】:

在软件中“简单地”模拟。由于人类可以处理超出手指的数字,因此软件可以使用更多字节来存储更多位,并在右侧的 MSB 上传播位。 假设您在 8 位 µP 中使用 16 位:

您获取 LSB 并添加它们。如果携带考虑它。 添加 MSB,最后添加进位。

附录 A 可以写成:8^1* (MSBa) + 8^0 * (LSBa) B也是一样。 在软件中“简单地”模拟。由于人类可以处理超出手指的数字,因此软件可以使用更多字节来存储更多位,并在右侧的 MSB 上传播位。 假设您在 8 位 µP 中使用 16 位:

您获取 LSB 并添加它们。如果携带考虑它。 添加 MSB,最后添加进位。

附录 A 可以写成: 8^1* (MSBa) + 8^0 * (LSBa) B也一样: 8^1* (MSBb) + 8^0 * (LSBb)

所以 A+B 是: 8^1* (MSBa) + 8^0 * (LSBa) + 8^1* (MSBb) + 8^0 * (LSBb) =

8^1* (MSBa + MSBb) + 8^0 * (LSB a + LSBb)

【讨论】:

以上是关于Windows 如何处理无符号 64 位整数?的主要内容,如果未能解决你的问题,请参考以下文章

有符号数和无符号数在一起如何处理的

你如何处理无状态 grails 服务中的共享数据

64 位计算机如何处理长整数?如何确定对象的大小? [关闭]

有符号数和无符号数

Mingw64 位 - 如何处理这个

有符号数和无符号数