gpt4 book ai didi

java - Java中如何将二进制字符串转换为十进制字符串

转载 作者:行者123 更新时间:2023-12-01 11:03:20 25 4
gpt4 key购买 nike

我正在做作业,以为我已经完成了,但老师告诉我这不是他想要的,所以我需要知道如何将存储为字符串的二进制数转换为十进制数字符串,而不使用 Java 中 length()、charAt()、幂函数和下限/上限之外的任何内置函数。

这就是我一开始的情况。

import java.util.Scanner;

public class inclass2Fall15Second {
public static void convertBinaryToDecimalString() {
Scanner myscnr = new Scanner(System.in);

int decimal = 0;

String binary;
System.out.println("Please enter a binary number: ");
binary = myscnr.nextLine();
decimal = Integer.parseInt(binary, 2);
System.out.println("The decimal number that corresponds to " + binary + " is " + decimal);
}

public static void main (String[] args) {
convertBinaryToDecimalString();
}
}

最佳答案

要将基数 2(二进制)表示形式转换为基数 10(十进制),请将每个位的值乘以 2^(位位置)并对值求和。

例如1011 -> (1 * 2^0) + (1 * 2^1) + (0 * 2^2) + (1 * 2^3) = 1 + 2 + 0 + 8 = 11

由于二进制是从右到左读取的(即 LSB(最低有效位)位于最右边的位,MSB(最高有效位)位于最左边的位),因此我们以相反的顺序遍历字符串。

要获取位值,请从字符中减去“0”。这将减去 ascii 值为“0”的字符的 ascii 值,得到该位的整数值。

为了计算 2^(位位置),我们可以保留位位置的计数,并在每次迭代时递增计数。然后我们只需进行 1 << 计数即可获得 2 ^ (位位置)的值。或者,您也可以执行 Math.pow(2, count),但前者效率更高,因为它只是左移指令。

这是实现上述内容的代码:

public static int convertBinStrToInt(String binStr) {
int dec = 0, count = 0;
for (int i = binStr.length()-1; i >=0; i--) {
dec += (binStr.charAt(i) - '0') * (1 << count++);
}

return dec;
}

关于java - Java中如何将二进制字符串转换为十进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33163190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com