How to print the bits of a character in C

1 Answer

0 votes
#include <stdio.h>

/*
 * Converts a character to its 8-bit binary representation
 * and stores the result in the supplied buffer.
 *
 * Parameters:
 *   ch     - character to convert
 *   buffer - output buffer (must be at least 9 bytes:
 *            8 bits + null terminator)
 */
void char_to_bits(unsigned char ch, char buffer[])
{
    for (int i = 7; i >= 0; --i) {
        buffer[7 - i] = ((ch >> i) & 1) ? '1' : '0';
    }

    buffer[8] = '\0';
}

/*
 * Prints a character and its binary representation.
 */
void print_character_bits(unsigned char ch)
{
    char bits[9] = "";

    char_to_bits(ch, bits);

    printf("Character: '%c'\n", ch);
    printf("Decimal  : %u\n", ch);
    printf("Binary   : %s\n", bits);
}

int main(void)
{
    /* Usage examples */

    print_character_bits('A');
    printf("\n");

    print_character_bits('a');
    printf("\n");

    print_character_bits('5');
    printf("\n");

    print_character_bits('@');

    return 0;
}


/*
run:

Character: 'A'
Decimal  : 65
Binary   : 01000001

Character: 'a'
Decimal  : 97
Binary   : 01100001

Character: '5'
Decimal  : 53
Binary   : 00110101

Character: '@'
Decimal  : 64
Binary   : 01000000

*/

 



answered Oct 16 by avibootz
...