📅  最后修改于: 2023-12-03 14:53:48.958000             🧑  作者: Mango
在计算机科学中,经常需要进行不同进制之间的转换。比如将十进制转换为二进制、将二进制转换为八进制、将八进制转换为十六进制等等。
在计算机科学中,我们经常使用的是二进制(也称作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)
不同进制之间的转换在计算机科学中是非常常见的。熟练地掌握这些进制之间的转换方法有助于我们更好地理解计算机底层原理,也能够帮助我们更高效地处理不同类型的数据。