java算法5~整数的二进制表达中有多少个1
2016-11-28 14:28
246 查看
算法目的:统计整数的二进制表达中有多少个1
算法实现原理:使用位运算,正负号处理问题。
实现:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package algorithm_database;
/**
* @author zhengchao
*/
public class CountOne {
public static void main(String[] args){
int x =-1;
System.out.println("1的个数"+count1(x));
}
public static int count1(int x){
int res = 0;
while(x!=0){
res+=x&1; //&操作,都是1才为1,其他都是0
x>>>=1; //无符号右移一位,不能用x>>=1,这是一个死循环,见下面三个位运算符的解释
}
return res;
}
}
/*
<< :左移运算符,num<<1,相当于num*2;
>>:右移运算符,num>>1,相当于num/2;
>>>:无符号右移,忽略符号位,空位以0补齐。
*/
注意事项:要使用无符号右移。
输出结果:32
算法实现原理:使用位运算,正负号处理问题。
实现:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package algorithm_database;
/**
* @author zhengchao
*/
public class CountOne {
public static void main(String[] args){
int x =-1;
System.out.println("1的个数"+count1(x));
}
public static int count1(int x){
int res = 0;
while(x!=0){
res+=x&1; //&操作,都是1才为1,其他都是0
x>>>=1; //无符号右移一位,不能用x>>=1,这是一个死循环,见下面三个位运算符的解释
}
return res;
}
}
/*
<< :左移运算符,num<<1,相当于num*2;
>>:右移运算符,num>>1,相当于num/2;
>>>:无符号右移,忽略符号位,空位以0补齐。
*/
注意事项:要使用无符号右移。
输出结果:32
相关文章推荐
- 【微软100题】输入一个整数,求该整数的二进制表达中有多少个1
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 两个整数二进制表达中,有多少个位(bit)不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 两个整数二进制表达中,有多少个位(bit)不同
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 整数的二进制表达中有多少个1
- 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- PHP 输入一个整数,求该整数的二进制表达中有多少个1
- 输入一个整数,求该整数的二进制表达中有多少个1
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- C 两个整数m和n的二进制表达中,有多少个位不同
- 1.写一个函数返回参数二进制中 1 的个数;2..获取一个数二进制序列中所有的偶数位和奇数位;3. 输出一个整数的每一位;4.两个int整数的二进制表达中,有多少个位不同
- .编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 统计整数的二进制表达里有多少个1 Python版
- 【微软100题】输入一个整数,求该整数的二进制表达中有多少个1
- 如何实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 求该整数的二进制表达中有多少个1
- 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?