输出整数二进制逆序对应的整数
输出整数二进制逆序对应的整数
例如240 对应二进制为00001111000000000000000000000000,反向为00000000000000000000000011110000,对应的应该是251658240
#include <stdio.h> #include "stdlib.h" #define N 32 void addByte(char *p, char *a){ int i = N,left,temp; left = 0; while (--i >= 0){ temp = p[i] - '0' + a[i] - '0' + left; left = temp/10; p[i] = temp%10 + '0'; } } int main(){ int n; scanf_s("%d",&n); char *p,*a; char byte[N + 1], reverse[N + 1] = "00000000000000000000000000000000", add[N + 1] = "00000000000000000000000000000001"; int i = 0, m = n; while (m > 0){ byte[i++] = m % 2 + '0'; m = m / 2; } for (; i < N; i++){ byte[i] = '0'; } byte[i] = '\0'; printf("%s\n", byte); p = reverse; a = add; while (--i >= 0){ if (i != N - 1){ addByte(a, a); } if (byte[i] == '1'){ addByte(p, a); } } while (*p++ == '0'); p--; printf("%s\n",p); system("pause"); }
浙公网安备 33010602011771号