我们需要编写一个 Java 程序,将给定的二进制数作为输入,并将其转换为等价的十进制数。
示例 :
> 输入:1100
> 输出:12
> 输入:1111
> 输出:15
二进制转十进制的转换方法
在 Java 中进行二进制转十进制转换,主要有以下几种方法:
- 基础方法
- 使用预定义函数
- 使用位运算符
1. 二进制转十进制的基础方法
将二进制数转换为十进制数的基本思想是:将二进制数中的每一位数字乘以 2 的相应位置数次方,然后将这些值相加。
例如 :
> 输入: 1100
>
> = 12^3 + 12^2 + 02^1 + 02^0
> = 8 + 4 + 0 + 0
>
> 输出: 12
下面是上述方法的 Java 代码(适用于 String 以及 integer 数据类型):
这里我们使用了 switch case 来处理不同的输入类型(即 String 或 integer)。用户需要输入他们选择的类型。给定的选择将执行/调用相应的函数。
#### 下面是该方法的实现:
Java
CODEBLOCK_db812e21
Output
Decimal Equivalent of 1010 is = 10
Decimal Equivalent of 1100 is = 12
上述方法的复杂度:
> 时间复杂度: O(log n)
> 辅助空间: O(1)
这里 n 是给定二进制数中的总位数。
如果你处理的是较大的二进制值,请尝试使用 ‘long‘ 代替 ‘int‘ 以避免任何错误。
2. 使用预定义函数
除了上述方法,我们可以直接使用 Java 的内置方法(即 Integer.parseInt()),将整数的字符串表示形式转换为其实际整数值。
下面是上述方法的实现:
Java
CODEBLOCK_4ae19727
Output
Decimal Equivalent of 1010 is 10
上述方法的复杂度:
> 时间复杂度 : O(n)
> 辅助空间 : O(1)
这里 n 是给定二进制数中的总位数。
如果你处理的是较大的二进制值,请尝试使用 ‘long‘ 代替 ‘int‘ 以避免任何错误。
3. 使用位运算符
在 Java 中,INLINECODEcbbbc405 运算符是右移运算符。它将数字的位向右移动,实际上相当于将该数字除以 2 的移位次方。因此,对于非负整数,INLINECODEec457701 大致等同于 x / (2^y)。
示例: x>>y = x/2^y
> – 16 >> 2 = 4
> – 4 >> 2 = 1
> – 8 >> 2 = 2
下面是上述方法的 Java 代码实现:
Java
“
import java.util.*;
// 驱动类
class BinaryConversion {
public static void binaryToDecimal(int num)
{
int r, temp, ans = 0, p = 0;
// 存储原始二进制数以便稍后
// 显示
temp = num;
// 循环将二进制转换为十进制
while (num != 0) {
// 获取二进制数的最右边一位
r = num % 10;
// 使用位运算更新十进制等值
// 左移
ans += r * (1 << p);
// 移动到下一位
p++;