我们从小用十进制,是因为人有十根手指。但「逢十进一」并不是天经地义——只是最顺手。计算机用二进制、程序员爱用十六进制、古人用罗马数字,每一种计数法都是为了解决特定场景下的麻烦。
十进制为什么是默认
十进制的核心是「基数为 10」:个、十、百、千,每一位满 10 就往左进一位。它的优势是和人类身体结构对齐,学起来零门槛。但当我们要和机器对话,十进制就不灵了。
二进制:计算机的母语
计算机的最小存储单元是「位」(bit),只有 0 和 1 两种状态(通电/断电)。所以机器内部一切都是二进制。你写的每个字符、每张图片,最终都变成一长串 0 和 1。问题在于:一个稍大的数字,二进制写出来会非常长——255 要写成 11111111,人读起来眼睛要瞎。
这就是 二进制转换 存在的意义:把人写的十进制和机器用的二进制互相翻译, debug 时一眼看清某个字节到底是多少。
十六进制:二进制的「缩写版」
工程师想了个聪明办法:因为 16 是 2 的 4 次方,4 个二进制位刚好能用一个十六进制字符(0–9 加 A–F)表示。于是 11111111 缩成了 FF,又短又好记。颜色值 #FF5733、内存地址、MAC 地址,全都是十六进制。
所以十六进制不是另一套数学,它是二进制的「人类友好缩写」。需要在这三者间切换时,进制转换器 能一次性把同一数值在 2/8/10/16 进制下都列出来,不用心算。
罗马数字:为「记账」而生
罗马数字没有「零」,也没有位权概念,I、V、X、L、C、M 代表固定数值,靠加减组合。它能流传千年,是因为在石碑雕刻、钟表表盘、章节编号这类「不需要运算、只做标记」的场景里,它足够且庄重。你不会拿它做乘法,但电影版权页写「MMXXVI」就是比「2026」有仪式感。
至于 十六进制转罗马数字 这种需求,更多是做编号、版权页、钟表盘设计时的小趣味。
它们之间怎么选
- 和机器打交道:二进制 / 十六进制
- 给人看、要运算:十进制
- 做标记、要庄重:罗马数字
理解每种计数法的「适用场景」比记住换算规则更有用。规则可以交给工具,判断「该用哪个」才是人的事。
一句话收尾
计数法没有高低之分,只有合不合适。十进制方便了人,二进制便宜了机器,十六进制做了中间人,罗马数字守着仪式感——它们一起构成了我们今天这个数字世界底层的「语言层」。