| 
 | 
 
 
发表于 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;
 
 - }
 
 
  复制代码 |   
 
 
 
 |