二进制表示中1的个数
来源:互联网 发布:景观大数据 百度云 编辑:程序博客网 时间:2024/05/18 02:13
问:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8
来源:牛客网
public
class
Solution {
//从n的2进制形式的最右边开始判断是不是1
/*
* 因为负数右移时,采用无符号右移
*/
//------------第一种解法---------------------
public static int NumberOf1_CanNotUse(int n) {
int count = 0;
while (n != 0) {
/*
* 用1和n进行位与运算,
* 结果要是为1则n的2进制形式
* 最右边那位肯定是1,否则为0
*/
if
((n &
1
) ==
1
) {
count++;
}
//把n的2进制形式往右推一位
n = n >>>
1
;
}
return
count;
}
//---------------正解--------------------------------
//思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数
private
static
int
NumberOf1_low(
int
n) {
int
count =
0
;
int
flag =
1
;
while
(flag !=
0
) {
if
((n & flag) !=
0
) {
count++;
}
flag = flag <<
1
;
}
return
count;
}
//--------------------最优解----------------------------
public
static
int
NumberOf1(
int
n) {
int
count =
0
;
while
(n !=
0
) {
++count;
n = (n -
1
) & n;
}
return
count;
}
public
static
void
main(String[] args) {
//使用n=10,二进制形式为1010,则1的个数为2;
int
n = -
10
;
System.out.println(n +
"的二进制中1的个数:"
+ NumberOf1(n));
}
}
阅读全文
0 0
- 二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 数字二进制表示中1的个数
- 数字二进制表示中1的个数
- 二进制表示中1的个数
- 整数的二进制表示中1 的个数
- 整数的二进制表示中1的个数
- 28.整数的二进制表示中1 的个数
- 统计整数的二进制表示中1的个数
- 28、整数的二进制表示中1的个数
- 100-28- 整数的二进制表示中1的个数
- 28.整数的二进制表示中1 的个数
- 整数的二进制表示中1的个数
- java框架Struts学习--struts开发流程
- Android最简单的基于FFmpeg的例子(三)---编译FFmpeg成一个SO库
- Python计算器
- 使用navicat同步两个MySQL数据库
- Java面试题与答案(3)
- 二进制表示中1的个数
- 关于12864文档的解读,有助于帮助学习如何读文档
- Springmvc构造RESTful讲解
- [DevExpress教程]如何在运行时将控件绑定到数据库
- js中面向对象(创建对象的几种方式)
- java.lang.IllegalStateException: ApplicationEventMulticaster not initialized
- 在TableView中增加CheckBox的几种方法比较
- mysql索引类型
- 用css实现三角形效果