作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我很惭愧地承认,我对位和位操作的了解并不尽如人意。这个周末我试图通过编写一些“反转位的顺序”和“计算 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/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!