I need huge help. How do I Modify the program to print hex instead of binary, without using * printf("%x"). That is, use putchar() to output each hex digit.
* Note that putchar('0' + 1) outputs the character "1",
* putchar ('0' + 2) outputs the character "2", etc., and that
* putchar('a' + 1) outputs the letter "b",
* putchar('a' + 2) outputs the letter "c", etc.
Code:
int main(void) {
printf("\n");
print_binary(65535);
print_binary(1<<31 | 1<<30 | 1<<5 | 1<<0);
print_binary(-7);
print_binary(-7.0);
print_binary("42");
printf("\n");
return 0;
}
/*
* Print num in binary, with leading zeros.
*/
void print_binary(int num) {
// The current bit we're sending to output. Remember,
// the least significant bit is bit 0.
int curr_bit_num = (sizeof(int) * 8 - 1);
while (curr_bit_num >= 0) {
int mask = 1 << curr_bit_num;
int bit = ((mask & num) >> curr_bit_num) & 1;
putchar('0' + bit);
if (curr_bit_num > 0 && curr_bit_num % 4 == 0) {
putchar('_');
}
curr_bit_num--;
}
printf(" is binary for %d\n", num);
}