二进制数中1的个数
Problem
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
Solution
负数,先按位取反
~
得到「相反数-1」,「相反数-1」里的“1”=原数补码里的“0”,32-补码里“0”的个数即得到1的个数。非负,直接数1
补充: n = n & (n-1)
相当于去掉二进制n里「从右往左第一个1」,直到n=0,迭代次数即1的个数。
Last updated
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
负数,先按位取反~
得到「相反数-1」,「相反数-1」里的“1”=原数补码里的“0”,32-补码里“0”的个数即得到1的个数。
非负,直接数1
补充: n = n & (n-1)
相当于去掉二进制n里「从右往左第一个1」,直到n=0,迭代次数即1的个数。
Last updated