练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
来源:互联网 发布:ps4全境封锁网络优化 编辑:程序博客网 时间:2024/05/29 17:18
X与X-1的末尾肯定是不同的,一个是1,另一个是0,进行与运算之后为0,所以可以实现将x最末位置0。
原文中的bitcount函数如下:
/* bitcount: count 1 bits in x */int bitcount(unsigned x){int b;for (b = 0; x != 0; x >>= 1)if (x & 01)b++;return b;}
函数bitcount用来统计其整型参数的值为1的二进制位的个数。
重写bitcount函数如下:
int bitcount(unsigned x){int b;for (b = 0; x != 0; b++)x&=(x+1);return b;}
阅读全文
0 0
- 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
- 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
- 练习2-9 在求对二的补码时,表达式 x &= (x - 1) 可以删除 x 中最右边值为 1 的一个二进制位,请解释这样做的道理。用这一方法重写biecount函数,以加快其执行速度。
- 表达式 x &= ( x - 1) 可以将x最右边值为1的二进制位置0
- 练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- 练习 2-6 编写一个函数setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- 练习 2-6 编写一个函数 setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- bitcount函数统计其整数参数的值为1的二进制位的个数
- 练习2-6 编写一个函数setbits(x,p,n,y),将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值
- 2.6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
- acm-求sinh(x)的值,sinh(x) = (ex-e-x)/2 ,其中用一个函数求e^x 。
- 练习 3-4 在数的对二的补码表示中,我们编写的itoa函数不能处理最大的负数,即n等于-2^(字长-1)的情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。
- ((x & (1<<n)) >> n) 求某个整数中二进制位的某位的值
- 执行"int x=1;int y=~x;"语句后,y的值为?-----取反运算,补码
- //求函数f(x)=x*x+2*x+1在【0,2】上的定积分//
- 写一个求x、y的平方和的平方根的函数,并在main中执行
- 练习 2-7 编写一个函数invert(x, p, n),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位求反(即,1变成0,0变成1),x的其余各位保持不变。
- 练习 2-7 编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结 果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各位保持不变。
- Java 面试题(一)
- npm 命令
- 最小生成树Prim算法理解
- Prim算法和Kruskal算法
- 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
- 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
- 练习2-10 重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。
- ThinkPHP3.2使用addAll()方法批量插入数据
- 最短路算法
- 2017"百度之星"程序设计大赛
- [Leetcode]295. Find Median from Data Stream
- python学习之路Day3
- JAVA企业面试题精选 Web基础 11-20
- 1.1 普通字符组