如何将8位二进制补码扩展成16位二进制补码

RT

如果8位二进制补码的最高位(符号位)为0,那么扩展后的16位补码直接在最高位前面添加8个0即可;
如果8位二进制补码的最高位(符号位)为1,那么扩展后的16位补码直接在最高位前面添加8个1即可;

举例如下:
-13
8位原码:1000 1101
8位补码:1111 0011
16位原码:1000 0000 0000 1101
16位补码:1111 1111 1111 0011
根据前面的知识,由于-13的最高位为1,所以直接在最高位前面添加8个1即可变为16位补码,即1111 1111 1111 0011(与前面由原码求补码的结果一致)。

13
8位原码:0000 1101
8位补码:0000 1101
16位原码:0000 0000 0000 1101
16位补码:0000 0000 0000 1101
根据前面的知识,由于13的最高位为0,所以直接在最高位前面添加8个0即可变为16位补码,即0000 0000 0000 1101(与前面由原码求补码的结果一致)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2021-04-05
实验报告内容:

实验目的
掌握机器指令的结构编程方法,程序的调试方法。

实验性质
综合性

实验内容
程序输入:8位2的补码数。在程序启动之前,这个数字存储在内存位置x3100的位[7:0]中。您的程序必须从内存中加载此输入。注意:不要对这个数字的位[15:8]做出任何假设:它们可能是零,也可能不是0。程序输出:16 位2的补码数。您的程序必须在符号扩展后将此值存储在内存位置x3101中。

实验环境
1. 计算机一台;

2. 中文Windows操作系统;

3. 安装LC-3Edit和Simulate模拟器软件。

实验主要步骤
; 程序名称:补码符号扩展

; 程序功能:程序输入8位2进制的补码数存储在内存位置x3100的位[7:0]中,输出:16

; 位2进制的补码数并将此值存储在内存位置x3101中。

; 编写时间:2019年11月27日

0011000000000000 ; .ORIG x3000

; 将8位2进制的补码数放置在寄存器R1中,并存储在x3100中

; 寄存器R2中放置x0080(128),R3中放置xFF00(-256),并与待判断的补码进行必要的

; 与操作,并将结果存入x3101

实验结果截图:略

实验小结
本次实验,训练了我对于LC-3机器指令语言的部分操作,其中主要训练的是LD和ST的指令操作以及BR跳转操作.通过本次实验,主要锻炼了我对PC偏移量的计算,以及相关机器指令的使用,提高了自己的编程能力,与此同时,对我机器指令语言编写的思维能力也进行了训练本回答被网友采纳
第2个回答  2022-08-18
如何将8位二进制补码扩展成16位二进制补码?
----
把原来8位补码的最高位,向左(高位)重复8次即可。
即:原来是正数的补码,就拓展八个0。拓展后,依然是正数的补码。
  原来是负数的补码,就拓展八个1。拓展后,依然是负数的补码。
第3个回答  2011-07-06
符号位是0就在前面直接被0,是1就全部补1
第4个回答  2011-07-06
新增位用符号位填充。。。。。
相似回答