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)才对呀
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论