求原码:定义全局变量数组存放机器码。定义a1存放最初的a,先判断a的符号,若为正,原码首位置0,否则置1,并令a=-a。然后求a的二进制:每次取余并除以2,从原码末尾开始存放各个数位。停止条件是a<1,这时用break跳出循环。
int a,i,a1,m;
int binarr[N];
printf("please input a number:");
scanf("%d",&a);
a1=a;
if(a==0)
for(i=0;i<N;i++)
binarr[i]=0;
else
if(a>0)
binarr[0]=0;
else
{
binarr[0]=1;
a=-a;
}
for(i=N-1;i>=1;i--)
{
binarr[i]=a%2;
a=a/2;
if(a<1)
{
m=i;
break;
}
}
for(int i=1;i<m;i++)
binarr[i]=0;
printf("the true code transformed is:");
for(i=0;i<N;i++)
{
printf("%d",binarr[i]);
}
printf("\n");
求反码:先判断a的符号,此时应调出a1,若a1为负,则对原码每一位都取反。若为正则不做任何处理。
if(a1<0)
for(i=1;i<N;i++)
if(binarr[i]==0)
binar