一、进制规则:
进制是数字系统的一种表示方式,它是按照一定的进位和位权规则来组合数字的。根据不同的进制基数,可以分为以下常见进制:
1、二进制:基数为2,使用数字0和1来表示。
2、八进制:基数为8,使用数字0~7来表示。
3、十进制:基数为10,使用数字0~9来表示。
4、十六进制:基数为16,使用数字和字母(A~F)来表示。
在任意进制中,每个位上的数都表示基数的幂,这个幂的次数就是这个数的位置。例如,对于十进制中的数字 456,它可以表示为:
456 = 410^2 + 510^1 + 6*10^0
①在二进制中,数字的每一位只能是0或1,因此它的权值就是2的幂次方。例如,对于二进制中的数字 1011,它可以表示为:
1011 = 12^3 + 02^2 + 12^1 + 12^0
②在八进制中,数字的每一位只能是0~7,因此它的权值就是8的幂次方。例如,对于八进制中的数字 345,它可以表示为:
345 = 38^2 + 48^1 + 5*8^0
③在十六进制中,数字的每一位可以是0~9和字母A~F,因此它的权值就是16的幂次方。例如,对于十六进制中的数字 3AB,它可以表示为:
3AB = 316^2 + 1016^1 + 11*16^0
不同进制的转换可以利用进制的基本原理,如数位分离、位权计算、幂次积累等方法来进行。
二、进制转换器
进制在转换的时候,计算过程和计算量有时候会很大,所以我们就得用到一些工具来辅助我们去进行一个快捷的、便捷的运算,甚至说可以替换我们去得到转换的结果。话不多说,直接上代码:
1、首先是一个默认的常用的十进制的转换器,功能也就是只能做十进制转换成其他进制数字的工具:
#Not easy to make, do not steal!!
print("We are accustomed to counting in decimal, which uses 10 digits: 0 to 9.")
print("----------------------------------")
print("This program can display a series of numbers in decimal, binary, and hexadecimal.")
print("----------------------------------\n")
while True:
number = int(input("请输入一个整数: "))
if number == 0:
print("这个数字是零,请重新输入。\n")
continue
print("二进制: ", bin(number))
print("八进制: ", oct(number))
print("十进制: ", number)
print("十六进制: ", hex(number))
break
2、下面这个就是一个功能更齐全的版本,它可以做到任意进制之间的转换,可谓功能性是十分的强大,妥妥的拉满了!
print("Through the following program, we can convert any base number into a number corresponding to any base number.")
print("----------------------------------\n")
def convert_number():
num = input("请输入要转换的数字: ")
n_base = int(input("请输入该数字的当前进制: "))
t_base = int(input("请输入要转换的目标进制: "))
try:
dec_num = int(num, n_base)
converted_num = ""
while dec_num > 0:
remainder = dec_num % t_base
if remainder < 10:
converted_num = str(remainder) + converted_num
else:
converted_num = chr(ord('A') + remainder - 10) + converted_num
dec_num = dec_num // t_base
print("转换后的数字为:", converted_num)
except ValueError:
print("输入的数字或进制无效,请重新输入。")
convert_number()
convert_number()
3、在输入源代码并运行几次之后,尝试对其进行实验性的修改。修改一些可变动的属性值或者一些其他的参数,使得程序多元、多样化!