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

1.假定内存中某两个字节的某几个连续bit位存储的是某个数的补码,请求出这个数的原码.用high指定高位,用low指定低位,也就是用high-low+1这么多位表示一个数的补码,其中第一位为符号位,其他位

题目详情
1.假定内存中某两个字节的某几个连续bit位存储的是某个数的补码,请求出这个数的原码.
用high指定高位,用low指定低位,也就是用high-low+1这么多位表示一个数的补码,
其中第一位为符号位,其他位为值.
▼优质解答
答案和解析
#include
#include
//该函数的作用:将一个整形数number的低位的两个字节中从high到low的几位数按照题目要求算出它的补码.
int binary(int high,int low,int number){
int bitcount=0; //从high到low的位数
int data=0;
int mid=0;
char p[2]={0};
for(int i=0;ilow;
}
else if (low>7) //如果低位大于7,则该数的所有位都在p[1]中
{
data=p[1]>>(low-8);
}
else
{
data=p[1]low);
}
//如果该数为负数则需按照“补码=原码的反码+1”的原则来计算出原码
if (1==(data>>(bitcount-1)))
{
data=data(17-bitcount);
data=data-1;
data=data(17-bitcount);
data=0-data;
}
return data;
}
int main()
{
int high=0;
int low=0;
int number=0;
int data;
printf("\nPlease input the Number.\n");
//输入任意一个整数用来当作内存中某个数
scanf("%d",&number);
//用十六进制格式将刚才的数输出到屏幕
printf("\nThe Number is 0x%x",number);
//要求用户输入高位和低位,中间用空格隔开高位不能大于15低位不能小于0
printf("\nplease input the high and the low number(16>high>low>=0):");
scanf("%d %d",&high,&low);
//高位必须大于低位
if(high