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 位整数?的主要内容,如果未能解决你的问题,请参考以下文章