|
发表于 2020-3-9 21:02:52
|
显示全部楼层
看不懂你的样例输入和输出,但是大概猜得到你的需求
为什么要用二进制输入?下面这个程序是使用十进制输入的,如果你需要二进制输入,那就自行修改代码,把这个代码修改成二进制输入的
- #include <stdio.h>
- #include <stdint.h>
- void set_bit(uint64_t *data, uint8_t index, uint8_t val)
- {
- if(index >= 64) return;
- *data &= ~((uint64_t)1 << index);
- val = val ? 1 : val;
- *data |= (uint64_t)val << index;
- }
- uint8_t get_bit(uint64_t data, uint8_t index)
- {
- if(index >= 64) return -1;
- return (data & ((uint64_t)1 << index)) ? 1 : 0;
- }
- int main(void)
- {
- uint8_t transform[64] = {
- 0, 16, 32, 48, 1, 17, 33, 49, 2, 18, 34, 50, 3, 19, 35, 51,
- 4, 20, 36, 52, 5, 21, 37, 53, 6, 22, 38, 54, 7, 23, 39, 55,
- 8, 24, 40, 56, 9, 25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
- 12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63
- };
- uint64_t data;
- uint64_t new_data = 0;
- printf("请输入一个数: ");
- scanf("%lu", &data);
- for(size_t i = 0; i < 64; ++i) {
- set_bit(&new_data, i, get_bit(data, transform[i]));
- }
- printf("%lx\n", new_data);
- return 0;
- }
复制代码 |
|