详解进制转换
在编程和数字计算中,进制转换是一项非常重要的技能。不同进制之间的转换可以帮助我们更好地理解数字的本质和计算机的工作原理。
目录
一、进制的基本概念
1.十进制
2.二进制
3.八进制
4.十六进制
二、十进制转其他进制
1.十进制转二进制
2.十进制转八进制
3.十进制转十六进制
三、其他进制转十进制
1.二进制转十进制
2.八进制转十进制
3.十六进制转十进制
四、二进制、八进制、十六进制之间的转换
1.二进制转八进制
2.二进制转十六进制
3.八进制转二进制
4.十六进制转二进制
一、进制的基本概念
1.十进制
我们日常生活中最常用的进制就是十进制。十进制由 0、1、2、3、4、5、6、7、8、9 十个数字组成,逢十进一。
2.二进制
计算机中最常用的进制是二进制。二进制由 0 和 1 两个数字组成,逢二进一。
3.八进制
八进制由 0、1、2、3、4、5、6、7 八个数字组成,逢八进一。
4.十六进制
十六进制由 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 十六个数字组成,逢十六进一。
二、十进制转其他进制
1.十进制转二进制
方法:除 2 取余,逆序排列。
def decimal_to_binary(decimal):
if decimal == 0:
return '0'
binary = ''
while decimal > 0:
binary = str(decimal % 2) + binary
decimal //= 2
return binary
2.十进制转八进制
方法:除 8 取余,逆序排列。
def decimal_to_octal(decimal):
if decimal == 0:
return '0'
octal = ''
while decimal > 0:
octal = str(decimal % 8) + octal
decimal //= 8
return octal
3.十进制转十六进制
方法:除 16 取余,逆序排列,将余数大于 9 的用字母 A-F 表示。
def decimal_to_hexadecimal(decimal):
if decimal == 0:
return '0'
hexadecimal = ''
while decimal > 0:
remainder = decimal % 16
if remainder < 10:
hexadecimal = str(remainder) + hexadecimal
else:
hexadecimal = chr(remainder - 10 + ord('A')) + hexadecimal
decimal //= 16
return hexadecimal
三、其他进制转十进制
1.二进制转十进制
方法:位权展开法。
def binary_to_decimal(binary):
decimal = 0
power = 0
for digit in reversed(binary):
decimal += int(digit) * (2 ** power)
power += 1
return decimal
2.八进制转十进制
方法:位权展开法。
def octal_to_decimal(octal):
decimal = 0
power = 0
for digit in reversed(octal):
decimal += int(digit) * (8 ** power)
power += 1
return decimal
3.十六进制转十进制
方法:位权展开法。
def hexadecimal_to_decimal(hexadecimal):
decimal = 0
power = 0
for digit in reversed(hexadecimal):
if digit.isdigit():
decimal += int(digit) * (16 ** power)
else:
decimal += (ord(digit.upper()) - ord('A') + 10) * (16 ** power)
power += 1
return decimal
四、二进制、八进制、十六进制之间的转换
1.二进制转八进制
方法:从低位开始,每三位二进制数转换为一位八进制数。
def binary_to_octal(binary):
if len(binary) % 3!= 0:
binary = '0' * (3 - len(binary) % 3) + binary
octal = ''
for i in range(0, len(binary), 3):
octal += str(int(binary[i:i + 3], 2))
return octal
2.二进制转十六进制
方法:从低位开始,每四位二进制数转换为一位十六进制数。
def binary_to_hexadecimal(binary):
if len(binary) % 4!= 0:
binary = '0' * (4 - len(binary) % 4) + binary
hexadecimal = ''
for i in range(0, len(binary), 4):
hexadecimal += hex(int(binary[i:i + 4], 2))[2:]
return hexadecimal
3.八进制转二进制
方法:一位八进制数转换为三位二进制数。
def octal_to_binary(octal):
binary = ''
for digit in octal:
binary += bin(int(digit))[2:].zfill(3)
return binary
4.十六进制转二进制
方法:一位十六进制数转换为四位二进制数。
def hexadecimal_to_binary(hexadecimal):
binary = ''
for digit in hexadecimal:
binary += bin(int(digit, 16))[2:].zfill(4)
return binary
***新人博主创作不易,希望大家多多点赞关注呀~