输入负数印出该负数的二进位
Complete the source file below to get the correct result.
运行:
input a integer (0~255) : 100
100's binary : 01100100
input a integer (int) (-2^31~2^31-1) : -100
-100's binary : 11111111111111111111111110011100
框架:
#include <stdio.h>
int c2b(unsigned char);
void printi(int);
int main ( void)
{
unsigned char a;
int x;
do
{
printf("input a integer (0~255) : ");
scanf("%u",&x);
}
while ((x > 255 || x < 0));
a = x;
printf("%d's binary : %08d",a,c2b(a) );
printf("\n");
printf("input a integer (int) (-2^31~2^31-1) : ");
scanf("%d",&x);
printi(x);
printf("\n");
return 0;
}
int c2b( unsigned char c )
{
// your code
}
void printi (int x)
{
// your code
}
[解决办法]
#include <stdio.h>
int c2b(unsigned char);
void printi(int);
int main ( void)
{
unsigned char a;
int x;
do
{
printf("input a integer (0~255) : ");
scanf("%u",&x);
}
while ((x > 255
[解决办法]
x < 0));
a = x;
printf("%d's binary : %08d",a,c2b(a) );
printf("\n");
printf("input a integer (int) (-2^31~2^31-1) : ");
scanf("%d",&x);
printi(x);
printf("\n");
return 0;
}
int c2b( unsigned char c )
{
int i, b;
b = 0;
for (i = 0; i < 8; ++i)
b = 10 * b + ((c >> (7 - i)) & 1U);
return b;
}
void printi (int x)
{
int i;
printf("%d's binary :", x);
for (i = 0; i < 32; ++i)
if ((((unsigned int)x) >> (31 - i)) & 1U)
printf("1");
else
printf("0");
}