【程序员面试宝典读书笔记】n&(n-1)
来源:互联网 发布:运城学院网络管理系统 编辑:程序博客网 时间:2024/06/10 20:49
n&(n-1)是我在看《程序员面试宝典》时看到的。
&:在这里代表按位与,表示参加运算的两个数据,按二进制位进行“与”运算。
n&(n-1)的作用:将n的二进制位中最低位的1改为0。
举个例子:设n=(1100)(二进制),则n-1=(1011)(二进制),n&(n-1)=(1000)(二进制),原来最低位的1变成了0。
以下是n&(n-1)的应用:
1、求某个数的二进制表示中1的个数
int fun(int x){ int count=0; while(x) { count++; x&=(x-1); } return count;}
2、判断一个数是否是2的幂次方
n>0&&(n&(n-1))==0
2的幂次方在计算机中用二进制表示是这样的数:只在某一位是1,其余各位都为0,如2=(0010)(二进制),8=(1000)(二进制),因此(n&(n-1))==0是2的幂次方的必要条件。但当n是0时,也满足(n&(n-1))==0,因此需要设定n>0。
0 0
- 【程序员面试宝典读书笔记】n&(n-1)
- <<程序员面试宝典>>读书笔记 1
- 0-n之间的1的个数何时等于n(Java程序员面试宝典)
- 《程序员面试宝典》读书笔记
- 程序员面试宝典(读书笔记)
- 《程序员面试宝典》简略读书笔记
- [Java程序员面试宝典]读书笔记
- <<程序员面试宝典>>读书笔记 2
- <<程序员面试宝典>>读书笔记 3
- <<程序员面试宝典>>读书笔记 4
- <<程序员面试宝典>>读书笔记 5
- <<程序员面试宝典>>读书笔记 6
- 程序员面试笔试宝典——读书笔记1、程序设计基础知识
- 程序员面试宝典-1
- 程序员面试宝典1
- 【程序员面试宝典读书笔记】位域
- 【程序员面试宝典读书笔记】螺旋队列
- 读书笔记(程序员面试宝典第三版)
- 社説 20150122 米一般教書演説 対テロで一層の指導力発揮を
- 楔文
- Servlet多线程安全问题
- 需求培训
- 加快DEDECMS静态html网页生成速度的方法
- 【程序员面试宝典读书笔记】n&(n-1)
- 译文 日经春秋 20150122
- 漫谈数据挖掘从入门到进阶
- Android之ExpandableListView的属性(展开,闭合,箭头)
- uva 1586 - Molar mass
- java中的AES 256算法遇到 Illegal key size or default parameters错的解决办法
- C++primer 第五版 *笔记一 [渣渣进化记]
- 织梦DedeCMS-自定义图片代替软件等级星标的方法
- UVa 12110 Printer Queue(特殊队列)