Print Binary Representation of an 8-bit or 16-bit Value

Code

#include <stdio.h>
#include <stdint.h>
#include <cstdlib>

void print_binary(uint16_t val) {
    // Your logic here
    int n=0;
    char *ret=nullptr;
    if (val <= 255) {
        n = 8;
        ret = (char *)malloc(n*sizeof(char));
        for(int i=0; i<n; i++) {
            if((val & 1)) {
                ret[n-1-i] = '1';
            } else {
                ret[n-1-i] = '0';
            }
            val >>= 1;
        }

    } else {
        n = 16;
        ret = (char *)malloc(16*sizeof(char));
        for(int i=0; i<n; i++) {
            if((val & 1)) {
                ret[n-1-i] = '1';
            } else {
                ret[n-1-i] = '0';
            }
            val >>= 1;
        }  
    } 

    for(int i=0; i<n; i++) {
        printf("%c", ret[i]);
    }
    return;
}

int main() {
    uint16_t val;
    scanf("%hu", &val);
    print_binary(val);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

10

Expected Output

00001010