12. Bit Spreading Interleave Bits with Zeros

Discussions4
Log in to post comments and replies.
davitkumar135
davitkumar135
Sep 03 2026

#include <stdio.h>

#include <stdint.h>

uint16_t spread_bits(uint8_t val) {

    uint16_t final_val = 0x0000;

    for (int i = 0; i < 8; i++) {

        if (val & (1 << i)) {

            final_val |= (1 << (2 * i));

        }

    }

    return final_val;

}

int main() {

    uint8_t val;

    scanf("%hhu", &val);

    uint16_t result = spread_bits(val);

    printf("%u", result);

    return 0;

}

0
ElliotWyrick
ElliotWyrick
Aug 16 2026
#include <stdio.h>
#include <stdint.h>

uint16_t spread_bits(uint8_t val) {
    uint16_t out = ((val << 7) & 0x4000);
    out |=  ((val << 6) & 0x1000);
    out |=  ((val << 5) & 0x0400);
    out |=  ((val << 4) & 0x0100);
    out |=  ((val << 3) & 0x0040);
    out |=  ((val << 2) & 0x0010);
    out |=  ((val << 1) & 0x0004);
    out |=  (val & 0x0001);
    return out;
}

int main() {
    uint8_t val;
    scanf("%hhu", &val);
    


    uint16_t result = spread_bits(val);
    
    //well formatted prints are very helpful when debugging
    //
    //printf("%016b\n", val << 6);
    //printf("%016b\n", 0x1000);
    //printf("%016b\n", val);
    //printf("%016b", result);
    
    printf("%u", result);
    return 0;
}
0
KangajanKuganathan
#include <stdio.h>
#include <stdint.h>

uint16_t spread_bits(uint8_t val) {
    // Your logic here
    uint16_t x = val;
    x = (x | (x << 4)) & 0x0f0f; // Step 1: Create 4-zero gaps
    x = (x | (x << 2)) & 0x3333; // Step 2: Create 2-zero gaps
    x = (x | (x << 1)) & 0x5555; // Step 3: Create 1-zero gaps
    return x;
}

int main() {
    uint8_t val;
    scanf("%hhu", &val);

    uint16_t result = spread_bits(val);
    printf("%u", result);
    return 0;
}
0
KangajanKuganathan
#include <stdio.h>
#include <stdint.h>

uint16_t spread_bits(uint8_t val) {
    // Your logic here
    uint16_t result = 0;
    for (int i = 0; i < 8; i++) {
        result |= ((val >> i) & 1) << (2 * i);
    }
    return result;
}

int main() {
    uint8_t val;
    scanf("%hhu", &val);

    uint16_t result = spread_bits(val);
    printf("%u", result);
    return 0;
}
0