十进制数转换为二进制、八进制和十六进制的原理基于除基取余法。这个方法涉及到将十进制数除以目标进制的基数(对于二进制是2、八进制是8、十六进制是16),然后记录下余数。这个过程重复进行,直到商数为0。最后,将所有的余数倒序排列,就得到了转换后的数。下面是对每个转换过程的具体解释:
1. 十进制转二进制
-
基数:2
-
方法:将十进制数除以2,记录余数。然后用得到的商数重复这个过程,直到商数为0。
-
例子
:十进制数
10
转二进制。
-
第一次除以2,商5余0。
-
第二次除以2,商2余1。
-
第三次除以2,商1余0。
-
第四次除以2,商0余1。
-
倒序排列余数,得到
1010
。
-
2. 十进制转八进制
-
基数:8
-
方法:将十进制数除以8,记录余数。然后用得到的商数重复这个过程,直到商数为0。
-
例子
:十进制数
65
转八进制。
-
第一次除以8,商8余1。
-
第二次除以8,商1余0。
-
第三次除以8,商0余1。
-
倒序排列余数,得到
101
。
-
3. 十进制转十六进制
-
基数:16
-
方法:将十进制数除以16,记录余数。然后用得到的商数重复这个过程,直到商数为0。对于余数大于9的情况,使用字母
A
到F
来表示10到15。 -
例子
:十进制数
255
转十六进制。
-
第一次除以16,商15余15,15对应于
F
。 -
第二次除以16,商0余15,15对应于
F
。 -
倒序排列余数,得到
FF
。
-
通过这种方式,我们可以将任何十进制数转换为其他进制的数。这种转换方法的关键在于不断地除以目标进制的基数,并记录每一步的余数,最后将这些余数倒序排列得到最终结果。
以下便是把十进制数转化成另外三个的代码:
def dec_to_bin(dec):
"""十进制转二进制"""
binary = ''
while dec > 0:
binary = str(dec % 2) + binary
dec = dec // 2
return binary or '0'
def dec_to_oct(dec):
"""十进制转八进制"""
octal = ''
while dec > 0:
octal = str(dec % 8) + octal
dec = dec // 8
return octal or '0'
def dec_to_hex(dec):
"""十进制转十六进制"""
hexa = ''
while dec > 0:
remainder = dec % 16
if remainder < 10:
hexa = str(remainder) + hexa
else:
# 将10-15转换为A-F
hexa = chr(55 + remainder) + hexa
dec = dec // 16
return hexa or '0'
# 主程序
if __name__ == "__main__":
dec = int(input("请输入一个十进制数: "))
print(f"十进制数 {dec} 转换为二进制数为: {dec_to_bin(dec)}")
print(f"十进制数 {dec} 转换为八进制数为: {dec_to_oct(dec)}")
print(f"十进制数 {dec} 转换为十六进制数为: {dec_to_hex(dec)}")