Q8--二进制中1的个数
来源:互联网 发布:把高中老师给睡了知乎 编辑:程序博客网 时间:2024/06/06 07:14
一、题目描述
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2.
二、java代码实现
public class Main { public static void main(String[] args){ int n = 15; System.out.println(numberOf1A(n)); System.out.println(numberOf1B(n)); System.out.println(numberOf1C(n)); } //第一种方法:判断最右边一位是不是1,然后把输入的整数右移一位,循环的次数<=32 public static int numberOf1A(int n){ int count = 0; while(n!=0){ if((n&1) !=0) count++; n = n >>> 1;//注意这里要用无符号右移,最高位补0,如果写成>>,当n为负数的时候会导致死循环 } return count; } //第二种方法:设一个flag,循环的次数等于整数二进制的位数,32位的整数需要循环32次 public static int numberOf1B(int n){ int count = 0; int flag = 1; while(flag != 0){ if((n & flag) != 0) count++; flag = flag << 1; } return count; } //第三种方法:n&(n-1)会把最右边的1置为0,这个操作有多少次代表有多少个1,循环的次数是1的个数 public static int numberOf1C(int n){ int count = 0; while(n!=0) { ++ count; n = n & (n-1); } return count; }}
0 0
- Q8--二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- Lightoj 1058
- 数据在底层的传播套接字
- Java 正确使用 volatile
- 利用仿函数实现定制删除器
- Find Peak Element
- Q8--二进制中1的个数
- [JavaWeb] Struts2 入门教程(详细啊!!)
- 网络最高安全机密
- getSharedPreferences(name, mode)两个参数的意思。
- 只需简单的几步配置,就可以免证书真机测试
- 【数据结构】布隆过滤器
- 【数据结构与算法】——排序综述
- js闭包理解
- Linux下Socket编程的端口问题( Bind error: Address already in use )