#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;
}#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;
}#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;
}
#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;
}