输出整数二进制逆序对应的整数

输出整数二进制逆序对应的整数

例如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");
}
View Code

 

posted on 2015-09-14 16:11  lamela11  阅读(241)  评论(0)    收藏  举报

导航