Math 对于具有固定大小位宽度寄存器的偏移二进制算法,是否有任何常规规则?

Math 对于具有固定大小位宽度寄存器的偏移二进制算法,是否有任何常规规则?,math,computer-science,Math,Computer Science,假设我们有两个固定大小的二进制数(8位),例如。 00000101(5)和00100000(32) 任务是在偏移量二进制中添加它们(超过128)。有没有关于如何进行的具体规定 例如,我会先将这两个数字转换成偏移量二进制表示法,然后将它们相加,然后减去偏移量(因为我加了两次)?但是如果是这样的话,假设假想寄存器只有8位宽,那么溢出又如何呢 或者我先减去多余的数,然后再加上第二个数?对于偏移二进制算法,有什么常规规则吗 我正在准备计算机体系结构和计算机数据算术的考试。这是上学期练习表上的一项任务。我

假设我们有两个固定大小的二进制数(8位),例如。
00000101(5)
00100000(32)

任务是在偏移量二进制中添加它们(超过128)。有没有关于如何进行的具体规定

例如,我会先将这两个数字转换成偏移量二进制表示法,然后将它们相加,然后减去偏移量(因为我加了两次)?但是如果是这样的话,假设假想寄存器只有8位宽,那么溢出又如何呢

或者我先减去多余的数,然后再加上第二个数?对于偏移二进制算法,有什么常规规则吗

我正在准备计算机体系结构和计算机数据算术的考试。这是上学期练习表上的一项任务。我已经在网上搜索了很多答案,但似乎找不到可靠的答案。

我不知道这个操作的“常规规则”是什么,但我可以告诉你我在编写机器代码时是如何做这个操作的

当偏移量是溢出寄存器的第一个数字的一半时,此方法工作良好。这是您的情况,因为偏移量是
128
,8位寄存器在
256
上溢出。当您要添加的两个数字已经是偏移量格式时,这种方法尤其有效

方法是:将两个偏移量相加,作为无符号加法,忽略任何溢出,然后翻转最高有效位

在您的示例中,您正在添加
10000101
5
偏移量)和
10100000
32
偏移量)。在
00100101
中添加这些结果,因为最高有效位溢出。翻转最高有效位会产生
10100101
,这实际上是偏移格式中的
37

此方法可能会导致溢出,但仅当结果太正或太负而无法放入偏移量格式时才会发生溢出。在大多数CPU中,这两个操作(无符号加法和翻转MSB)实际上是微不足道的