w3resource

Print Binary format in C using printf alternatives


How to print Binary format in C using printf alternatives?


In standard C, the printf function does not include a built-in conversion specifier to print numbers in binary format. While printf supports specifiers for decimal (%d), hexadecimal (%x), and octal (%o), it lacks a binary specifier. However, it is possible to print numbers in binary using a custom function that manually converts and formats the binary representation.

Custom Function to Print Binary in C

To print an integer in binary format, you can create a function that iterates over each bit of the integer and prints 0 or 1 as needed. Below are two examples: one using bit manipulation and another that pads binary output for a cleaner, aligned look.

These functions are helpful for binary representations in debugging and bitwise operations, offering flexibility beyond standard printf capabilities.

Example 1: Simple Binary Printing Function

This example uses bitwise operations to print each bit of a number.

Code:

#include <stdio.h> 
void printBinary(int num) {
    for (int i = sizeof(int) * 8 - 1; i >= 0; i--) {
        printf("%d", (num >> i) & 1);
    }
    printf("\n");
}

int main() {
    int number = 5;
    printf("Binary representation of %d: ", number);
    printBinary(number);
    return 0;
}

Output:

Binary representation of 5: 00000000000000000000000000000101

Explanation:

This function shifts each bit to the right, checks if it’s 1 or 0, and prints it. The output shows a full 32-bit binary representation of the number 5.

Example 2: Binary Printing with Padding

This function makes the binary output more readable by adding spaces or grouping the bits in blocks (e.g., groups of 4 or 8).

Code:

#include <stdio.h> 
void printBinaryWithPadding(int num) {
    for (int i = sizeof(int) * 8 - 1; i >= 0; i--) {
        printf("%d", (num >> i) & 1);
        if (i % 4 == 0) printf(" "); // Group by 4 bits for readability
    }
    printf("\n");
}

int main() {
    int number = 9;
    printf("Binary representation of %d: ", number);
    printBinaryWithPadding(number);
    return 0;
}

Output:

Binary representation of 9: 0000 0000 0000 0000 0000 0000 0000 1001

Explanation:

Here, the binary output is padded in groups of 4, making it easier to read.

Summary:

  • Standard printf does not support binary formatting directly.
  • Custom functions allow printing in binary by iterating through each bit.
  • Bit manipulation (>> and &) is used to check each bit’s value and print 0 or 1.


Follow us on Facebook and Twitter for latest update.