问题描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。比如输入9,,9的二进制表示是1001,1的个数是2,所以输出2
思路分析
如果一个数与该数减一的结果进行与运算,会把该数低位第一个1变成0,而高位不变,比如1100(12),减一后就变成1011(11),也就是说建议后,也就右边位1变0,0变1,与位操作后就是少了一个1,如1100&1011,变成1000,一次类推,最终得到结果
码上有戏
|
|
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。比如输入9,,9的二进制表示是1001,1的个数是2,所以输出2
如果一个数与该数减一的结果进行与运算,会把该数低位第一个1变成0,而高位不变,比如1100(12),减一后就变成1011(11),也就是说建议后,也就右边位1变0,0变1,与位操作后就是少了一个1,如1100&1011,变成1000,一次类推,最终得到结果
|
|
快乐源于分享,总结溢于提高
热评文章