繁体   English   中英

八进制算术。 如果八进制签名,我该怎么办?

[英]Octal arithmetic. If the octal is signed, what do I do?

当这些值表示以符号幅度格式存储的带符号的12位八进制数字时,什么是4365-3412? 结果应写成八进制。 展示你的作品。

所以二进制的4365是:100011110101,二进制的3412是:011100001010

我从这里去哪里? 既然是符号幅度,我是否要将4365中的位反转为:011 100 001 010,然后从中减去?

该问题要求以符号大小格式表示的4365 - 3412的值。 所以:

  1. 将八进制4365转换为十进制。 (这是负面的!)
  2. 将八进制3412转换为十进制
  3. 计算差异
  4. 将答案转换为12位带符号的幅度(二进制)
  5. 转换为八进制。

那是做到这一点的一种方法。 另一种方法是计算八进制或二进制算法的差。 (您在八进制/二进制算术技能方面做得如何?)

4个八进制数字代表12个二进制数字。

假定符号幅度表示有1位表示符号,并且有11位幅度。 如果幅度为正,则符号位为0;如果幅度为负,则符号位为1。

与无符号的12位数字相比,12位符号幅度格式的解释如下:

      [  Sign ][ Magnitude ]
      [-------][-----------]
BITS  [    11 ][      0-10 ]

您的问题开始于将符号幅度编码值的位重新解释为给定的无符号12位八进制数的位,即4365

我们可以通过查看二进制位对此进行解码。 (实际上,只是最高有效位。)我们看到符号是1(它是负数),其余位是大小。

      ENCODED OCT   4365
      ENCODED BIN  [100 011 110 101]
         SIGN BIN  [1
    MAGNITUDE BIN    00 011 110 101]
             SIGN  negative (-)
    MAGNITUDE OCT   365

实际上,通过查看第一个数字,可以很容易地从原始八进制表示中读取符号和大小。

  • 如果前导数字为{0,1,2,3},则为正数。
  • 如果前导数字为{4,5,6,7},则幅度为负。 我们将数字的第一位数字分别重新映射为{0,1,2,3},然后将结果视为幅度。 (或简单地从第一位减去4)

一些例子:

  • 4365编码-0365 ,或简单地-365
  • 5234编码-1234
  • 3210编码+3210
  • 0000编码+0000 ,或简单地为0
  • 4000编码为“负零”,它不会对算术产生不利影响,但应将其规范地视为数量零0

要对两个带符号的数字执行加法运算,只需跟踪其符号位即可。

  • 如果符号位相同,则只需增加幅度并保留符号位。
  • 如果符号位不同,则从较大的符号中减去较小的幅度,并保持较大的符号。

要对两个带符号的数进行减法,只需翻转第二个带符号的数,然后使用该过程进行加法。


在您的示例中,我们注意到,我们有一个负数减去一个正数,这意味着我们将简单地增加幅度并得到负数。

幅值以简单的逐位数字方式添加,如下所示:

    3 6 5
+ 3 4 1 2
---------
  3 7 7 7   

根据规则,结果的符号将为负。 因此,我们需要对第一个数字进行反向映射以设置第11位(符号位)。 {0,1,2,3}映射到{4,5,6,7}(或仅将4添加到第一位)。 因此3变成7,八进制的最终编码数字是: 7777

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM