题目
计算在一个 32 位的整数的二进制表示中有多少个1
样例
给定 32
(10 0000),返回 1
给定 5
(101),返回 2
给定 1023
(11 1111 1111),返回 10
分析
这道题需要用到 移位运算符
和 与运算
例如5(101)
分别和 0...001
,0...010
,0...100
, 0..1000
,1...0
进行与运算(&
),如果不为0
,说明5
的二进制在这一位为1
。0...001
,0...010
,0...100
,0..1000
,1...0
可以通过对1
移位(<<
)来计算。
代码(Java)
1 | public int countOnes(int num) { |