任意进制之间即时互转
进制转换器让你输入任意二进制(二进制)、八进制(八进制)、十进制(十进制)或十六进制(十六进制)的数字,立刻看到它在其余三种进制下的对应表示。不用记转换公式,也不用心算,只需选好源进制、输入数字,剩下的实时计算工具都替你完成。
为什么会有不同的进制
人类习惯用十进制计数,因为我们有十根手指。但计算机没有手指——它靠的是通、断两种电信号状态,这自然催生了二进制。其他进制则是二进制的实用简写:八进制把三位二进制数字打包成一组,十六进制把四位打包成一组,这让又长又难读的二进制字符串对工程师来说变得容易读写得多。
二进制——逢二进一
二进制是数字计算的根基。计算机里存储的每一个值、处理器执行的每一条指令、屏幕上的每一个像素,最终都会归结成一串0和1。一个二进制位叫做一个比特,八个比特组成一个字节。因为二进制数字很快就会变得很长——十进制的255需要八位二进制数字(11111111)才能表示——程序员很少直接写原始二进制,而是更喜欢紧凑得多的十六进制。
理解二进制对计算机科学专业的学生、软件工程师以及任何接触底层硬件的人来说都至关重要。位运算——比如AND、OR、XOR和NOT这类操作——在系统编程、密码学和图形处理中都是常见技巧。
八进制——逢八进一
八进制只用0到7这八个数字。一个八进制数字恰好对应三位二进制数字,所以三位一组的比特能干净地映射成一个八进制数字。这在大型机和小型机的年代非常方便,因为内存常常就是按三位一组来组织的。
如今,八进制最常见的用途是在Unix和Linux的文件权限代码里。执行chmod 755时,你用的就是八进制表示法:7(rwx)、5(r-x)、5(r-x),每个数字用三个比特分别编码所有者、群组和其他用户的读、写、执行权限。任何接触Linux系统的运维或开发人员几乎每天都会遇到八进制权限。
十进制——逢十进一
十进制是几乎所有人类文化通用的日常数字系统,使用0到9这十个数字。十进制数字每一位代表10的某次幂:个位、十位、百位、千位,以此类推。面向人的应用场景默认都用十进制——银行余额、温度、距离、时间戳,显示出来的都是十进制。
但在计算机内部,十进制运算相对"昂贵"。处理器天生擅长二进制运算,所以要表示十进制数字,需要用到诸如二进制编码十进制(BCD)之类的编码方案或转换算法。正因如此,大多数内部计算都用二进制完成,只有最终展示给用户看的结果才会转换成十进制。
十六进制——逢十六进一
十六进制在0到9之外,又用字母A到F表示10到15,把数字符号扩展到了16个。一个十六进制数字恰好对应四位二进制数字(称为一个"半字节")。这让十六进制成为二进制数据极为紧凑的表示方式:8位二进制的11111111,写成十六进制就只是FF。
十六进制在计算机和电子领域无处不在。调试器里的内存地址、网页设计中的颜色代码(#FF6347就是番茄红)、MAC地址、SHA哈希值以及字节码清单,都用十六进制表示。如果你看过文件的十六进制转储,或者查看过网络数据包的内容,就已经直接接触过十六进制了。
进制转换是怎么算的
把任意进制的数转换成十进制很直接:把每一位数字乘以该进制的相应次幂(从右往左数,从第0位开始),然后把所有结果加起来。
举例来说,二进制数1011转换成十进制:
1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11
把十进制转换成其他进制,需要反复做除法:用这个数除以目标进制,把余数记作下一位数字(从右往左排列),再用商继续除,直到商变成0为止。
举例来说,把11转换成二进制:11 ÷ 2 = 5余1,5 ÷ 2 = 2余1,2 ÷ 2 = 1余0,1 ÷ 2 = 0余1。把余数从下往上读出来,就是1011。
实际应用场景
颜色代码:网页设计和平面设计都依赖十六进制颜色代码。每一个CSS颜色值,比如#3A86FF,都是三对十六进制数字,分别编码红、绿、蓝三个通道,每个通道的取值范围是00(0)到FF(255)。
网络地址:MAC地址和IPv6地址都用十六进制书写。像2001:0db8:85a3::8a2e:0370:7334这样的IPv6地址,用一种(虽然依然复杂但)相对易读的格式压缩了128个比特的信息。
调试:在单步调试汇编代码或查看内存内容时,地址和原始数据值通常都以十六进制显示。能快速在十六进制和十进制之间换算——或者一眼看出0xFF等于255——是从事底层开发的一项基本功。
权限管理:Linux和macOS的文件系统权限使用八进制表示。理解644的含义——所有者可读可写(4+2=6),群组和其他用户只能读(4)——对服务器管理来说是必备知识。
心算小技巧
多练几次,一些常见的转换关系会变得很自然:
- 二进制1111 = 十六进制F = 十进制15
- 二进制1000 = 十六进制8 = 十进制8
- 十六进制FF = 十进制255 = 二进制11111111
- 十六进制10 = 十进制16 = 二进制10000
一个实用的捷径是:把二进制数从右往左每4位分成一组,再把每一组分别转换成对应的十六进制数字。比如11111100,拆成1111和1100,分别对应F和C,合起来就是十六进制的FC。
私密且即时
所有计算都完全在你的浏览器里完成,不会有任何数据被发送到服务器。转换过程在本地通过JavaScript内置的parseInt和toString方法完成,对JavaScript安全整数范围内(最高到2^53−1)的整数都十分可靠。
Number base converter FAQ
- What is binary (base 2)?
- Binary uses only the digits 0 and 1. Each position represents a power of 2. It is the fundamental language of computers since transistors have two states: on (1) and off (0). For example, 1010 in binary equals 10 in decimal.
- What is hexadecimal (base 16)?
- Hexadecimal uses digits 0–9 and letters A–F (representing 10–15). One hex digit represents exactly 4 binary digits (bits), making hex a compact way to write binary. For example, FF in hex equals 255 in decimal.
- What is octal (base 8)?
- Octal uses digits 0–7. One octal digit represents exactly 3 binary digits. Octal was widely used in early computing systems and is still used in Unix/Linux file permissions (e.g., chmod 755).