【发布时间】:2013-03-12 20:28:45
【问题描述】:
如果我添加 2 个二进制数,10000000 + 10000000,以 8 为底,会发生什么? 携带会发生什么?
【问题讨论】:
如果我添加 2 个二进制数,10000000 + 10000000,以 8 为底,会发生什么? 携带会发生什么?
【问题讨论】:
您不能同时使用二进制(以 2 为基数)和以 8 为基数。我还必须假设您的意思是样本值中的无符号值。您是否想知道这里的溢出、截断或其他问题?简而言之,您真正想要做什么?
【讨论】:
大多数现代 CPU 在其通用标志集中都有一个进位标志 (CF),它将包含加法后高位的进位。因此,在这种特定情况下,假设无符号值为 0b1000.0000,则总和将为 0b0000.0000,并设置 CF 标志,总“虚拟”值为 0b1.0000.0000,这是正确的总和。然而,正确处理这种溢出高度依赖于底层算法试图做什么。在某些情况下,溢出是可以接受的,但在许多情况下却不是。
【讨论】: