不使用循环显示二进制数,仅使用二元运算符:
#include<stdio.h>
#include<stdint.h>
#include<math.h>
int main()
{
int a;
scanf("%u", &a);
printf("Number: 0x%X\n", a);
printf("%d", ((a & 0x80) >> 7));
printf("%d", ((a & 0x40) >> 6));
printf("%d", ((a & 0x20) >> 5));
printf("%d", ((a & 0x10) >> 4));
printf("%d", ((a & 0x08) >> 3));
printf("%d", ((a & 0x04) >> 2));
printf("%d", ((a & 0x02) >> 1));
printf("%d", ((a & 0x01) >> 0));
printf("\n");
return 0;
}
请注意,由于输入是整数,我添加了一个printf
131
Number: 0x83
10000011
当然,使用循环会更容易:
int main()
{
int a;
uint8_t Mask;
uint8_t Shift;
scanf("%u", &a);
printf("Number: %X\n", a);
Mask = 0x80;
Shift = 7;
while (Mask > 0)
{
printf("%d", ((a & Mask) >> Shift));
Mask = Mask >> 1;
Shift--;
}
printf("\n");
return 0;
}