java输入一个整数,输出该数二进制表示中1的个数。
时间: 2024-02-17 10:59:43 浏览: 54
这个问题可以使用位运算来解决。我们可以用一个变量count来记录1的个数,然后不断将输入的整数n右移一位并与1进行与运算,判断最后一位是否为1,如果是,count加1。代码如下:
```java
public static int countOnes(int n) {
int count = 0;
while (n != 0) {
if ((n & 1) == 1) {
count++;
}
n = n >>> 1; // 无符号右移,避免负数时死循环
}
return count;
}
```
其中,`>>>` 是无符号右移操作符,它将被移位的数的二进制码整体右移,移动后左边用0填充,右边被移出的部分舍弃。这里使用无符号右移的原因是,如果输入的整数为负数,使用有符号右移操作符 `>>` 可能会导致死循环。
相关问题
java输入一个整数,输出该数二进制表示中1的个数的全部代码
完整的代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = scanner.nextInt();
int count = countOnes(n);
System.out.println("该数二进制表示中1的个数为:" + count);
}
public static int countOnes(int n) {
int count = 0;
while (n != 0) {
if ((n & 1) == 1) {
count++;
}
n = n >>> 1; // 无符号右移,避免负数时死循环
}
return count;
}
}
```
这段代码首先通过 `Scanner` 类获取用户输入的整数,然后调用 `countOnes` 方法来计算二进制表示中1的个数,最后输出结果。
java中输入一个整数,输出该数二进制表示中1的个数。例如:输入一个整数9,表示成二进制是1001,有2位是1
可以使用位运算来实现统计二进制表示中1的个数:
```java
public static int countOnes(int n) {
int count = 0;
while (n != 0) {
count++;
n &= (n - 1);
}
return count;
}
```
具体解释如下:
1. 定义一个计数器 `count`,初始值为0;
2. 循环判断 `n` 是否为0,如果不为0,则继续循环;
3. 在循环内部,每次将 `n` 与 `n-1` 进行按位与运算,并将结果重新赋值给 `n`;
4. 每次按位与运算会使得 `n` 中最右边的1变为0,因此这个循环会不断地将 `n` 中的1清除掉,直到 `n` 变为0;
5. 每次清除掉一个1时,将计数器 `count` 加1;
6. 最后返回计数器 `count` 的值,即为二进制表示中1的个数。
以上程序的时间复杂度为 O(k),其中 k 表示二进制中1的个数。因为每次循环都会清除掉 `n` 中的一个1,因此循环的次数最多为二进制中1的个数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)