计算机组成原理 补码 符号扩展现在有一int变量x的值为-513,要求x的补码12位表示?符号扩展为16位表示?右移一位

1个回答

  • 你的思路是正确的,只是你的表述有误,在第二行中间“反码”应改为“补码”.

    下面给你捋一遍整个过程.

    首先将给出的数根据给定位数用原码表示(无论正数负数).即-513的原码为1010 0000 0001(12位).

    其次,求出上述原码相对应的补码,符号位不变,其它位变反后加一.即-513的补码为1101 1111 1111(12位).

    然后,对求出的补码进行符号扩展(取符号位填充到数的前方使其凑足位数,其它位保持不变直接写到低位).注意与原码的符号扩展不一样.即1111 1101 1111 1111(16位).

    最后,对补码进行算术右移.负数补码的算术右移是添1.注意与逻辑右移、负数原码、正数算术右移区别.结果是1111 1110 1111 1111(16位).

    你的结果是正确的,只是其中涉及一些概念必须弄清楚,否则容易混!