求一个数的补码

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:16:40
写一段C程序,把一个数(正整数或负整数)的补码(二进制形式)求出来,怎么写?

#include<stdio.h>
#include<malloc.h>

void main()
{
int i,j,a,t,*p=NULL;

printf("请输入一个整数: ");
scanf("%d",&a);

if(a<0)
t=-a;
else
t=a;
i=1;
while(t>=2)
{
p=(int*)realloc(p,i*sizeof(int));
*(p+i-1)=t%2;
t=t/2;
i++;
}
p=(int*)realloc(p,i*sizeof(int));
*(p+i-1)=t;

if(a>=0)
{
printf("%d的补码是:0 ",a);
for(j=0;j<i;j++)
printf("%d",*(p+j));
}
else
{
for(j=i-1;j>=0;j--)
if(*(p+j)==1)
break;
t=j;
printf("%d的补码是:1 ",a);
for(j=0;j<t;j++)
printf("%d",(*(p+j)+1)%2);
for(j=t;j<i;j++)
printf("%d",*(p+j));
}
printf("\n");
}

本身就是二进制补码存储的
要显示每一位是0还是1
可以和0x00000001等做与运算,再移位

#include&qu