<pre class="java" name="code"><p>/**
* 求一个数的二进制数种1的个数
*
* @author Administrator
*
*/
public class CountOneInBinaryNum {</p><p> /**
* 解法1、将原来的数除以2如果有余数代表(二进制数)当前位置有一个1 二进制只有1或0,末尾为0则代表偶数,为1代表基数,
*/
public void Z2_1_method1(int num) {
System.out.println(Integer.toBinaryString(num));
int count = 0;
while (num != 0) {
if (num % 2 == 1) {
count++;
}
num /= 2;
}
System.out.println(count);
}
</p><p>
/**
* 解法2、将解法一的除法变为位移运算
*/
public void Z2_1_method2(int num) {
System.out.println(Long.toBinaryString(num));
int count = 0;
while (num != 0) {
count += num & 0x01;
num >>= 1;
}
System.out.println(count);
}</p><p> /**
* 解法3、将num直接与num-1相与就能判断(二进制位)当前位置是否为1
*/
public void Z2_1_method3(int num) {
System.out.println(Integer.toBinaryString(num));
int count = 0;
while (num != 0) {
num &= (num - 1);
count++;
}
System.out.println(count);
}</p><p>
/**
* 解法4、如果num不大可以将num的对应二进制中一个个数存于数组中,以空间换取时间
*/</p><p> // 扩展问题:求两个二进制数有多少位是不相同的
/**
* 解法1、直接求
*/
/**
* 解法2、 A=101101 B=110101 第一步、n=A&B 第二步、m=A|B 第三步、z=m^n 第四步求z中1的个数
*/
}
</p><p></p>
求一个数的二进制数中1的个数
最新推荐文章于 2024-01-24 23:23:37 发布