题目描述:计算在一个 32 位的整数的二进制表式中有多少个 1.
样例:给定 32 (100000),返回 1;给定 5 (101),返回 2;给定 1023 (111111111),返回 9
很简单的题目,当然可以先对十进制的整数转换成二进制,再统计1的个数。
但是通过位运算(其实就是通过分析二进制位上0,1的关系,直接对0,1比特位进行运算)我们可以更快地解决问题。
先说一下基本的几种位运算:
1. 与(&):相当于是数学关系中的交,只有全部为真,结果才是真,也就是说,
0 & 1 = 1 & 0 = 0 & 0 = 0;
1 & 1 = 1
2. 或(|):相当于求并,有一个真就是真,
0 | 0 = 0
1