方法一:
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 }
本文提供了三种不同的C语言实现方式来显示输入整数的二进制表示形式。第一种方法通过逐位右移并检查最高位来确定每一位的值;第二种方法同样采用逐位左移的方式但直接利用符号位进行判断;第三种方法与第二种类似,但使用布尔表达式的真值直接输出。

4415

被折叠的 条评论
为什么被折叠?



