1 #include<stdio.h>
2 #include<math.h>
3 int main()
4 {
5 int m,n,a[10],i=0,y[100],f[100],b[100],j,k;
6 printf("请输入一个整数:");
7 scanf("%d",&n);
8 m=abs(n);
9 while (m!=0)
10 {
11 a[i]=m%2;
12 m=m/2;
13 i=i+1;
14 }
15 if (n>=0)
16 {
17 for(j=0;j<i;j++) y[j]=a[j];
18 if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;
19 y[j]=0;
20 for(k=0;k<=j;k++)
21 {
22 f[k]=y[k];
23 b[k]=y[k];
24 }
25 }
26 else
27 {
28 int w=0;
29 for(j=0;j<i;j++) y[j]=a[j];
30 if ((j+1)%8!=0) for(;(j+1)%8!=0;j++) y[j]=0;y[j]=1;
31 for(k=0;k<j;k++) if(y[k]) f[k]=0;else f[k]=1;f[k]=1;
32 for( k=0;k<j;k++) {if (k==0)b[k]=f[k]+1;else b[k]=f[k]+w;if (b[k]==2){b[k]=0;w=1;}else w=0;}b[k]=1;
33 }
34 printf("原码:");for(k=j;k>=0;k--)printf("%d",y[k]);printf("\n");
35 printf("反码:");for(k=j;k>=0;k--)printf("%d",f[k]);printf("\n");
36 printf("补码:");for(k=j;k>=0;k--)printf("%d",b[k]);printf("\n");
37 }
![]()
![]()