题目描述
给一个整数,求该整数的二进制数中,1的个数。
题解报告
最优解法:
int count = 0;
while(n){
++ count;
n = (n-1)&n;
}
(n-1)&n的意思是将一个二进制数最右边的1变为零。
其他解法:
1)可以将原数右移和1做与运算;//这个解法如果是负数可能会出现死循环。因为负数右移时,在最高位补得是1。
2)可以将1左移和原数做与运算.
相关题目:
1.用一条语句判断一个整数是不是2的整数次方?2的整数次方
给一个整数,求该整数的二进制数中,1的个数。
最优解法:
int count = 0;
while(n){
++ count;
n = (n-1)&n;
}
(n-1)&n的意思是将一个二进制数最右边的1变为零。
其他解法:
1)可以将原数右移和1做与运算;//这个解法如果是负数可能会出现死循环。因为负数右移时,在最高位补得是1。
2)可以将1左移和原数做与运算.
相关题目:
1.用一条语句判断一个整数是不是2的整数次方?2的整数次方