将数字从 2 进制 (二进制) 转换为 6 进制

2024年8月28日 | 阅读 7 分钟

本文讨论了将二进制数转换为六进制数的实际实现

问题 - 问题是将给定的二进制数转换为其等效的六进制数。

例如

Input 1: N = 1101101 = 10910
Output = 301 (3016 = 3 x 62 + 0 x 61 + 1 x 60 = 3 x 36 + 1 = 109)

Input 2: N = 1110111 = 11910

Output = 315 (3156 = 3 x 62 + 1 x 61 + 5 x 60 = 3 x 36 + 1 x 6 + 5 x 1 = 119)

思路和方法

获得所需结果的简单想法是首先将给定的二进制数转换为其等效的十进制数,然后将其转换为其等效的六进制数。

现在让我们了解解决问题所涉及的工作/函数

  • binaryToDecimal() 函数的工作原理

所需函数的伪代码如下

二进制转十进制 (Int n) // 其中 n 是二进制输入

  • decimalToBase6() 函数的工作原理

所需函数的伪代码如下

十进制转六进制 (Int dec) // 其中 dec 是十进制输入

让我们举个例子进一步理解

设 n = 1101,当我们调用二进制转十进制函数时,它将首先创建一些变量并将它们初始化为某个值。 这里,dec = 0,pv = 1 被创建。 现在,检查 while 循环条件。 这里,n = 1101,大于零,所以,我们进入第一次迭代。

第一次迭代

第二次迭代

第三次迭代

第 4 次迭代

在这里,while 循环将终止,因为 n 现在等于零。 现在,它将调用 decimalToBase6(dec) 函数并将 dec = 13 传递给它。

当调用 decimaltToBase6 函数时,它创建了 pv = 1 和 output = 0。dec = 13 被传递给该函数,它大于零,因此满足 while 循环条件。 让我们逐个查看每个迭代

第一次迭代

第二次迭代

这里,dec 现在等于零。 所以,在下一次迭代中,while 循环的条件将失败,它将打印输出并退出程序。

上述问题的实际实现

1. Java 实现

示例输出

The Base6 equivalent of 1101101 = 301
The Base6 equivalent of 1110111 = 315
The Base6 equivalent of 1010111 = 223
The Base6 equivalent of 1101111 = 303

2. C++ 实现

示例输出

The Base6 equivalent of 11011011 = 1003
The Base6 equivalent of 10110111 = 503 
The Base6 equivalent of 10110111 = 503
The Base6 equivalent of 11011011 = 1003

3. C 语言实现

示例输出

The Base6 equivalent of 101010 = 110
The Base6 equivalent of 111101 = 141
The Base6 equivalent of 101101 = 113
The Base6 equivalent of 111010 = 134

4. Python 实现

示例输出

The base6 equivalent of 1010101 = 221
The base6 equivalent of 1111010 = 322
The base6 equivalent of 1011011 = 231
The base6 equivalent of 1110100 = 312

下一主题缓存一致性