[英]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
的值。 所以:
4365
转换为十进制。 (这是负面的!) 3412
转换为十进制 那是做到这一点的一种方法。 另一种方法是计算八进制或二进制算法的差。 (您在八进制/二进制算术技能方面做得如何?)
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
实际上,通过查看第一个数字,可以很容易地从原始八进制表示中读取符号和大小。
一些例子:
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.