进制转换的编程可以通过以下步骤实现:
确定源进制和目标进制
用户需要输入待转换的数字及其进制,以及希望转换成的目标进制。
将源进制数字转换为十进制
使用除基取余法将源进制数字转换为十进制数。例如,将二进制数 `1011` 转换为十进制数,计算过程为:
\[
1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11
\]
将十进制数转换为目标进制
使用按权展开法将十进制数转换为目标进制数。例如,将十进制数 `11` 转换为二进制数,计算过程为:
\[
11 \div 2 = 5 \quad \text{余} \, 1 \\
5 \div 2 = 2 \quad \text{余} \, 1 \\
2 \div 2 = 1 \quad \text{余} \, 0 \\
1 \div 2 = 0 \quad \text{余} \, 1
\]
将余数从下往上排列,得到 `1011`。
输出转换结果
将转换后的目标进制数字输出给用户。
```python
def decimal_to_binary(decimal):
result = ""
while decimal > 0:
remainder = decimal % 2
result = str(remainder) + result
decimal //= 2
return result
def binary_to_decimal(binary):
decimal = 0
length = len(binary)
for i in range(length):
decimal += int(binary[length - 1 - i]) * (2 i) return decimal def decimal_to_octal(decimal): result = "" while decimal > 0: remainder = decimal % 8 result = str(remainder) + result decimal //= 8 return result def octal_to_decimal(octal): decimal = 0 length = len(octal) for i in range(length): decimal += int(octal[length - 1 - i]) * (8
return decimal
def decimal_to_hexadecimal(decimal):
result = ""
hex_digits = "0123456789ABCDEF"
while decimal > 0:
remainder = decimal % 16
result = hex_digits[remainder] + result
decimal //= 16
return result
def hexadecimal_to_decimal(hexadecimal):
decimal = 0
length = len(hexadecimal)
for i in range(length):
decimal += hex_digits.index(hexadecimal[length - 1 - i]) * (16 (length - 1 - i))
return decimal
示例使用
decimal_number = 1011
binary_number = decimal_to_binary(decimal_number)
print(f"十进制数 {decimal_number} 转换为二进制数: {binary_number}")
binary_number = "1011"
decimal_number = binary_to_decimal(binary_number)
print(f"二进制数 {binary_number} 转换为十进制数: {decimal_number}")
```
这个示例代码包含了十进制到二进制、二进制到十进制、十进制到八进制、八进制到十进制、十进制到十六进制、以及十六进制到十进制的转换函数。你可以根据需要调用这些函数来实现不同进制之间的转换。