Computer science 八进制算术。如果八进制有符号,我该怎么办?

Computer science 八进制算术。如果八进制有符号,我该怎么办?,computer-science,octal,Computer Science,Octal,当这些值表示以符号大小格式存储的有符号12位八进制数时,4365-3412是什么?结果应以八进制书写。展示你的作品 所以二进制的4365是:100011110101 二进制的3412是:011100001010 我该怎么办?因为它是符号大小,我是否将4365中的位反转为:011 100 001 010,然后从中减去?问题询问符号大小格式中表示的4365-3412的值。因此: 将八进制4365转换为十进制。(是负数!) 将八进制3412转换为十进制 计算差异 将答案转换为12位有符号幅值(二进制)

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

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


我该怎么办?因为它是符号大小,我是否将4365中的位反转为:011 100 001 010,然后从中减去?

问题询问符号大小格式中表示的
4365-3412
的值。因此:

  • 将八进制
    4365
    转换为十进制。(是负数!)
  • 将八进制
    3412
    转换为十进制
  • 计算差异
  • 将答案转换为12位有符号幅值(二进制)
  • 翻译成八进制


  • 这是一种方法。另一种方法是计算八进制的差值。。。或二进制。。。算术。(你的八进制/二进制算术技能有多好?

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

    大概符号大小意味着有1位表示符号,11位表示大小。如果幅值为正,符号位为0;如果幅值为负,符号位为1

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

          [  Sign ][ Magnitude ]
          [-------][-----------]
    BITS  [    11 ][      0-10 ]
    
    您的问题开始于将符号幅度编码值的位重新解释为
    4365
    给出的无符号12位八进制数的位

    我们可以通过查看二进制位来解码。(实际上,只有最高有效位)我们看到符号是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
    不,您不需要反转任何位。但是前导的
    4
    告诉您符号位已设置,因此
    4365
    实际上表示
    -425
    (dec)。我如何知道符号位已设置?八进制数的规则是什么?符号位通常是符号大小形式中最重要的位。它应该被适当地记录在某个地方——在任务中,在你的课堂讲稿中,等等。@Bergi,一个12位有符号的八进制,作为
    4365
    不代表十进制的
    (-1803)
    ?不确定
    (-425)
    从何而来。@Wyck
    4000
    (0x800)位是符号,其他位
    0365
    (0x0F5)是大小。你怎么知道4365是负数?请看@Bergi的评论。我不会转换为十进制,至少在本例中不会-计算起来要复杂得多!你只需要去掉符号位,记住你要加两个负数,然后再加上合适的符号位。我已经提出了很多方法。我的第一个建议是我认为会给OP最大的信心,让他得到正确的答案。而且,你说的也不完全正确。你还需要做八进制的算术。。。这不是OP可能已经学会的技能。是的,对-但是当仔细看八进制或二进制表示时,人们注意到这里实际上不需要太多算术:-)如果我想先转换成二进制,然后添加。。。有没有办法做到这一点?哦,我看到八进制365=分进制245从符号大小转换为二的补码:将最高有效位(符号位)设置为零,然后反转所有位,然后加一。