Computer science 八进制算术。如果八进制有符号,我该怎么办?
当这些值表示以符号大小格式存储的有符号12位八进制数时,4365-3412是什么?结果应以八进制书写。展示你的作品 所以二进制的4365是:100011110101 二进制的3412是:011100001010Computer science 八进制算术。如果八进制有符号,我该怎么办?,computer-science,octal,Computer Science,Octal,当这些值表示以符号大小格式存储的有符号12位八进制数时,4365-3412是什么?结果应以八进制书写。展示你的作品 所以二进制的4365是:100011110101 二进制的3412是:011100001010 我该怎么办?因为它是符号大小,我是否将4365中的位反转为:011 100 001 010,然后从中减去?问题询问符号大小格式中表示的4365-3412的值。因此: 将八进制4365转换为十进制。(是负数!) 将八进制3412转换为十进制 计算差异 将答案转换为12位有符号幅值(二进制)
我该怎么办?因为它是符号大小,我是否将4365中的位反转为:011 100 001 010,然后从中减去?问题询问符号大小格式中表示的
4365-3412
的值。因此:
4365
转换为十进制。(是负数!)3412
转换为十进制这是一种方法。另一种方法是计算八进制的差值。。。或二进制。。。算术。(你的八进制/二进制算术技能有多好?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)
从何而来。@Wyck4000
(0x800)位是符号,其他位0365
(0x0F5)是大小。你怎么知道4365是负数?请看@Bergi的评论。我不会转换为十进制,至少在本例中不会-计算起来要复杂得多!你只需要去掉符号位,记住你要加两个负数,然后再加上合适的符号位。我已经提出了很多方法。我的第一个建议是我认为会给OP最大的信心,让他得到正确的答案。而且,你说的也不完全正确。你还需要做八进制的算术。。。这不是OP可能已经学会的技能。是的,对-但是当仔细看八进制或二进制表示时,人们注意到这里实际上不需要太多算术:-)如果我想先转换成二进制,然后添加。。。有没有办法做到这一点?哦,我看到八进制365=分进制245从符号大小转换为二的补码:将最高有效位(符号位)设置为零,然后反转所有位,然后加一。