方法一:
1 #include <stdio.h>
2
3 int main()
4 {
5 const int bits=sizeof(int)*8;
6 // unsigned int mask=0x80000000;
7 unsigned int mask=1<<bits-1;
8 int n;
9 printf("input an integer:");
10 scanf("%d",&n);
11 int i;
12 for(i=0;i<bits;i++)
13 {
14 printf("%c",n&mask?'1':'0');
15 mask=mask>>1;
16 }
17 printf("\n");
18 return 0;
19 }
方法二:将整数每次往左移1位,根据符号位判断
1 #include <stdio.h>
2
3 int main()
4 {
5 const int bits=sizeof(int)*8;
6 unsigned int mask=1<<bits-1;
7 int n;
8 printf("input an integer:");
9 scanf("%d",&n);
10 int i;
11 for(i=0;i<bits;i++)
12 {
13 printf("%c",n<0?'1':'0'); //根据符号位判断
14 n<<=1;
15 }
16 printf("\n");
17 return 0;
18 }
方法三
1 #include <stdio.h>
2
3 int main()
4 {
5 const int bits=sizeof(int)*8;
6 unsigned int mask=1<<bits-1;
7 int n;
8 printf("input an integer:");
9 scanf("%d",&n);
10 int i;
11 for(i=0;i<bits;i++)
12 {
13 printf("%d",n<0); //小于0为真就输出1
14 n<<=1;
15 }
16 printf("\n");
17 return 0;
18 }