【问题标题】:Are there any conventional rules for offset binary arithmetic with fixed size bit-width registers?具有固定大小位宽寄存器的偏移二进制算术是否有任何常规规则?
【发布时间】:2019-06-20 14:05:22
【问题描述】:

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

任务是将它们添加到偏移二进制中(超过 128)。有没有关于如何处理的具体规则?

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

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

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

【问题讨论】:

    标签: math computer-science


    【解决方案1】:

    我不知道这个操作的“常规规则”是什么,但是我可以告诉你我在做机器码的时候是怎么做这个操作的。

    当偏移量是溢出寄存器的第一个数字的一​​半时,此方法效果很好。这就是你的情况,因为偏移量是128,而256 上的8 位寄存器溢出。当您要添加的两个数字已经采用偏移格式时,这尤其适用。

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

    在您的情况下,您将添加100001015 in offset)和1010000032 in offset)。将这些结果添加到00100101,因为最高有效位溢出。翻转最高有效位会得到10100101,这确实是偏移格式的37

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

    【讨论】:

      猜你喜欢
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2017-02-06
      • 2014-05-26
      • 2011-02-28
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多