首页  > 教育解读  > 判断整数二进制多少位

判断整数二进制多少位

2025-05-01 14:08:41
特立独行的兔子
特立独行的兔子已认证

特立独行的兔子为您分享以下优质知识

要判断一个整数的二进制表示中有多少位为1,可以使用位操作来高效实现。以下是具体方法和代码示例:

一、核心方法:`x & (x - 1)`

原理 :`x & (x - 1)` 可以将整数 `x` 的二进制表示中最右边的 `1` 变为 `0`。例如:

- `5` 的二进制是 `101`,`5 - 1 = 4`(二进制 `100`),`5 & 4 = 4`(二进制 `100`);

- `7` 的二进制是 `111`,`7 - 1 = 6`(二进制 `110`),`7 & 6 = 6`(二进制 `110`)。

步骤

- 初始化计数器 `count` 为 `0`;

- 当 `x` 不为 `0` 时,执行 `x = x & (x - 1)` 并将 `count` 加 `1`;

- 当 `x` 为 `0` 时,结束循环,`count` 即为二进制中 `1` 的个数。

二、代码示例

以下是使用 C、Java 和 C++ 实现的代码示例:

C 语言实现

```c

include

int countones(unsigned int x) {

int count = 0;

while (x) {

x = x & (x - 1);

count++;

}

return count;

}

int main() {

unsigned int num = 29; // 二进制 11101

printf("Number of 1s in binary: %dn", countones(num));

return 0;

}

```

Java 实现

```java

public class Countones {

public static int countones(int x) {

int count = 0;

while (x != 0) {

x = x & (x - 1);

count++;

}

return count;

}

public static void main(String[] args) {

int num = 29; // 二进制 11101

System.out.println("Number of 1s in binary: " + countones(num));

}

}

```

C++ 实现

```cpp

include

int countones(unsigned int x) {

int count = 0;

while (x) {

x = x & (x - 1);

count++;

}

return count;

}

int main() {

unsigned int num = 29; // 二进制 11101

std::cout