首页  > 教育解读  > java如何把二进制转为正数

java如何把二进制转为正数

2025-05-08 21:47:56
周老师
周老师已认证

周老师为您分享以下优质知识

在Java中将二进制字符串转换为正数,主要有以下两种方法:

一、使用 `Integer.parseInt()` 方法

这是最简单直接的方法,适用于二进制字符串表示的正数或负数(需注意指定基数为2)。

```java

public class BinaryToDecimal {

public static void main(String[] args) {

String binaryString = "101010"; // 二进制表示的正数

int decimal = Integer.parseInt(binaryString, 2); // 转换为十进制

System.out.println("Decimal number: " + decimal); // 输出 42

}

}

```

二、按权展开法(手动转换)

适用于需要自定义转换逻辑的场景,支持处理二进制中的小数点。

```java

public class BinToTen1 {

public static double BinToTen1(String binary) {

int index = binary.indexOf('.');

double ten = 0;

double integer = 0;

double decimal = 0;

if (index == -1) {

// 无小数部分

for (int i = 0; i < binary.length(); i++) {

ten += (binary.charAt(i) - '0') * Math.pow(2, -(i + binary.length() - 1));

}

} else {

// 有整数和小数部分

for (int i = 0; i < index; i++) {

integer += (binary.charAt(i) - '0') * Math.pow(2, -(i + 1));

}

for (int i = index + 1; i < binary.length(); i++) {

decimal += (binary.charAt(i) - '0') * Math.pow(2, -(i - index - 1));

}

}

return integer + decimal;

}

public static void main(String[] args) {

String binaryString = "1010.10"; // 二进制表示的正数(含小数)

double decimal = BinToTen1(binaryString);

System.out.println("Decimal number: " + decimal); // 输出 42.5

}

}

```

说明

`Integer.parseInt()` 方法

适用于二进制字符串,无论其表示正数还是负数,通过指定基数2即可正确转换。

按权展开法

- 整数部分:

从右至左,按位权展开计算(如 `1010` → `0×2^0 + 1×2^1 + 0×2^2 + 1×2^3 = 10`)。 - 小数部分:从左至右,按位权展开计算(如 `.10` → `1×2^(-1) + 0×2^(-2) = 0.5`)。 - 适用于包含小数点的二进制字符串。

以上方法均能正确处理二进制字符串转换为十进制正数,选择时可根据需求(如是否含小数)及代码简洁性决定。