1. 进制转换基础概念解析
计算机科学中最基础的技能莫过于进制转换了。记得我第一次参加蓝桥杯比赛时,就因为对进制转换不够熟练,在一道看似简单的题目上浪费了整整20分钟。进制转换不仅是编程竞赛的常客,更是计算机底层原理的核心基础。
1.1 为什么需要掌握进制转换
计算机内部使用二进制(0和1)表示所有数据,而人类更习惯使用十进制。此外,十六进制因其与二进制的天然对应关系,在内存地址表示、颜色编码等领域广泛应用。不同进制间的转换能力,直接决定了我们理解计算机底层工作原理的深度。
1.2 常见进制系统特点
- 二进制(Binary):基数为2,数字符号为0和1
- 八进制(Octal):基数为8,数字符号为0-7
- 十进制(Decimal):基数为10,数字符号为0-9
- 十六进制(Hexadecimal):基数为16,数字符号为0-9加上A-F
注意:在编程中,十六进制的A-F不区分大小写,但为了代码统一性,建议保持一致性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 进制转换核心算法详解
2.1 十进制转其他进制(除基取余法)
这是最基础的转换方法,适用于将十进制数转换为任意进制。以十进制数29转换为二进制为例:
- 29 ÷ 2 = 14 余 1
- 14 ÷ 2 = 7 余 0
- 7 ÷ 2 = 3 余 1
- 3 ÷ 2 = 1 余 1
- 1 ÷ 2 = 0 余 1
将余数从下往上读取,得到二进制结果:11101
python复制def decimal_to_base(n, base):
if n == 0:
return "0"
digits = []
while n > 0:
remainder = n % base
digits.append(str(remainder) if remainder < 10 else chr(55 + remainder))
n = n // base
return ''.join(reversed(digits))
2.2 其他进制转十进制(位权展开法)
这个方法适用于将任意进制数转换为十进制。以二进制数1101为例:
1×2³ + 1×2² + 0×2¹
