早教吧 育儿知识 作业答案 考试题库 百科 知识分享

计算机组成原理补码符号扩展现在有一int变量x的值为-513,要求x的补码12位表示?符号扩展为16位表示?右移一位后的16表示?我想-513的原码为101000000001(12位),那么其反码是110111111111(12位)

题目详情
计算机组成原理 补码 符号扩展
现在有一int变量x的值为-513,要求x的补码12位表示?符号扩展为16位表示?右移一位后的16表示?
我想-513的原码为1010 0000 0001(12位),那么其反码是1101 1111 1111(12位),扩展为16位就是高8位全是1,所以符号扩展后是1111 1101 1111 1111(16位),右移一位后是1111 1110 1111 1111(16位).
但我的结果和答案不太一样,大家看看我这样做对吗?
▼优质解答
答案和解析
你的思路是正确的,只是你的表述有误,在第二行中间“反码”应改为“补码”.
下面给你捋一遍整个过程.
首先将给出的数根据给定位数用原码表示(无论正数负数).即-513的原码为1010 0000 0001(12位).
其次,求出上述原码相对应的补码,符号位不变,其它位变反后加一.即-513的补码为1101 1111 1111(12位).
然后,对求出的补码进行符号扩展(取符号位填充到数的前方使其凑足位数,其它位保持不变直接写到低位).注意与原码的符号扩展不一样.即1111 1101 1111 1111(16位).
最后,对补码进行算术右移.负数补码的算术右移是添1.注意与逻辑右移、负数原码、正数算术右移区别.结果是1111 1110 1111 1111(16位).
你的结果是正确的,只是其中涉及一些概念必须弄清楚,否则容易混!