二进制中有多少个1

计算在一个 32 位的整数的二进制表式中有多少个 1.

样例

给定 32 (100000),返回 1

给定 5 (101),返回 2

给定 1023 (111111111),返回 9

 

思路:

1、要注意的一点是负数在计算机中是用补码表示的,我是用32位最大整数 + 给定的负数, 这样可以模拟出负数的补码表示,当然最后还要加上符号位1

2、看到算二进制,我第一想到的是那个公式(除2余数,除2余数。。。。),所以我一开始是用这种方法算出来的。

3、然后才看到别人通过移位就可以了,速度应该要比断除要快多了。

 

发表评论