首页 > reverse-bits ,https://leetcode.com/problems/reverse-bits/

reverse-bits ,https://leetcode.com/problems/reverse-bits/


#include <stdio.h>
#include <string.h>

typedef unsigned int uint32_t;

void f10to2(int n,char *buf)
{
    int temp = n;
    int num;
    int i=0,j =0;
    while(temp !=0)
    {
        num = temp%2;
        buf[i] = num + '0';
        i++;
        temp = temp/2;
    }
    for (int i = 0; i < 32; ++i)
    {
        printf("%c", buf[i]);
    }
}

uint32_t f2to10(char *buf)
{
    uint32_t number =0;
    int n =31,w=1;
    char* p=buf;
    // 转换2进制到10进制
    while(n >=0)
    {
        number += (buf[n]-'0')*w;
        w*=2;
        n--;
    }
    return number;
}

uint32_t reverseBits(uint32_t n) {

    char buf[32];
    memset(buf,'0',32);
    uint32_t res =0;
    f10to2(n,buf);
    res = f2to10(buf);
    return res;
}
int main() {

    uint32_t n = 2147483648;
    
    reverseBits(n);
    return 0;
}

此时运行结果为 4294967295 (11111111111111111111111111111111),怎么会这样啊,void f10to2(int n,char *buf),中printf输出的buf内容好奇怪!应该是 1 (00000000000000000000000000000001)才对呀

【热门文章】
【热门文章】