gpt4 book ai didi

c - 这个反转位序函数是怎么回事?

转载 作者:太空狗 更新时间:2023-10-29 15:47:07 25 4
gpt4 key购买 nike

我很惭愧地承认,我对位和位操作的了解并不尽如人意。这个周末我试图通过编写一些“反转位的顺序”和“计算 ON 位”函数来解决这个问题。我从 here 中举了一个例子但是当我如下实现它时,我发现我必须在 < 29 时循环。如果我在 < 32 时循环(如示例中所示)然后当我尝试打印整数时(使用我编写的 printBits 函数)我似乎缺少前 3 位。这对我来说毫无意义,有人可以帮助我吗?

感谢大家的帮助,我添加了评论以显示我所做的更改。

int reverse(int n)
{
int r = 0;
int i = 0;
for(i = 0; i < 29; i++) //Should be i < 32
{
r = (r << 1) + (n & 1); //| instead of + to make it obvious I'm handling bits
n >>=1;
}

return r;
}

这是我的 printBits 函数:

void printBits(int n)
{
int mask = 0X10000000; //unsigned int mask = 0X80000000;
while (mask)
{
if (mask & n)
{
printf("1");
}
else
{
printf("0");
}
mask >>= 1;
}
printf("\n");
}

还有工作?反向功能

int reverse2(int n)
{
int r = n;
int s = sizeof(n) * 7; // int s = (sizeof(n) * 8) -1

for (n >>= 1; n; n >>=1)
{
r <<=1;
r |= n & 1;
s--;


r <<= s;
return r;
}

最佳答案

int mask = 0X10000000;

在位 28 中放入 1。您需要 0X80000000

关于c - 这个反转位序函数是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com