Java 中的二进制转十进制转换

我们需要编写一个 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++;

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/21887.html
点赞
0.00 平均评分 (0% 分数) - 0