📜  将基数 A 转换为基数 B(1)

📅  最后修改于: 2023-12-03 14:53:48.958000             🧑  作者: Mango

将基数 A 转换为基数 B

在计算机科学中,经常需要进行不同进制之间的转换。比如将十进制转换为二进制、将二进制转换为八进制、将八进制转换为十六进制等等。

常见进制及其表示方法

在计算机科学中,我们经常使用的是二进制(也称作base 2,以0和1表示)、八进制(也称作base 8,以0到7表示)以及十六进制(也称作base 16,以0到9和A到F表示)。十进制是我们平时最为熟悉的进制,以0到9表示。以下是这些进制转换的示例:

十进制转换为其他进制

十进制转换为二进制:

def decimal_to_binary(num):
    if num == 0:
        return "0b0"
    binary = ""
    while num > 0:
        binary = str(num % 2) + binary
        num = num // 2
    return "0b" + binary

十进制转换为八进制:

def decimal_to_octal(num):
    if num == 0:
        return "0"
    octal = ""
    while num > 0:
        octal = str(num % 8) + octal
        num = num // 8
    return octal

十进制转换为十六进制:

def decimal_to_hex(num):
    if num == 0:
        return "0x0"
    hexa = ""
    while num > 0:
        remainder = num % 16
        if remainder < 10:
            hexa = str(remainder) + hexa
        else:
            hexa = chr(remainder + 55) + hexa
        num = num // 16
    return "0x" + hexa
二进制转换为其他进制

二进制转换为十进制:

def binary_to_decimal(binary):
    decimal = 0
    power = 0
    for digit in binary[::-1]:
        decimal += int(digit) * 2 ** power
        power += 1
    return decimal

二进制转换为八进制:

def binary_to_octal(binary):
    decimal = binary_to_decimal(binary)
    return decimal_to_octal(decimal)

二进制转换为十六进制:

def binary_to_hex(binary):
    decimal = binary_to_decimal(binary)
    return decimal_to_hex(decimal)
八进制转换为其他进制

八进制转换为十进制:

def octal_to_decimal(octal):
    decimal = 0
    power = 0
    for digit in octal[::-1]:
        decimal += int(digit) * 8 ** power
        power += 1
    return decimal

八进制转换为二进制:

def octal_to_binary(octal):
    decimal = octal_to_decimal(octal)
    return decimal_to_binary(decimal)

八进制转换为十六进制:

def octal_to_hex(octal):
    decimal = octal_to_decimal(octal)
    return decimal_to_hex(decimal)
十六进制转换为其他进制

十六进制转换为十进制:

def hex_to_decimal(hexa):
    decimal = 0
    power = 0
    for digit in hexa[::-1]:
        if digit.isnumeric():
            decimal += int(digit) * 16 ** power
        else:
            decimal += (ord(digit.upper()) - 55) * 16 ** power
        power += 1
    return decimal

十六进制转换为二进制:

def hex_to_binary(hexa):
    decimal = hex_to_decimal(hexa)
    return decimal_to_binary(decimal)

十六进制转换为八进制:

def hex_to_octal(hexa):
    decimal = hex_to_decimal(hexa)
    return decimal_to_octal(decimal)
总结

不同进制之间的转换在计算机科学中是非常常见的。熟练地掌握这些进制之间的转换方法有助于我们更好地理解计算机底层原理,也能够帮助我们更高效地处理不同类型的数据。