mikaio.dev

Number Base Converter

Enter any number and select its base to instantly see it in binary, octal, decimal, and hexadecimal.

任意进制之间即时互转

进制转换器让你输入任意二进制(二进制)、八进制(八进制)、十进制(十进制)或十六进制(十六进制)的数字,立刻看到它在其余三种进制下的对应表示。不用记转换公式,也不用心算,只需选好源进制、输入数字,剩下的实时计算工具都替你完成。

为什么会有不同的进制

人类习惯用十进制计数,因为我们有十根手指。但计算机没有手指——它靠的是通、断两种电信号状态,这自然催生了二进制。其他进制则是二进制的实用简写:八进制把三位二进制数字打包成一组,十六进制把四位打包成一组,这让又长又难读的二进制字符串对工程师来说变得容易读写得多。

二进制——逢二进一

二进制是数字计算的根基。计算机里存储的每一个值、处理器执行的每一条指令、屏幕上的每一个像素,最终都会归结成一串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)——对服务器管理来说是必备知识。

心算小技巧

多练几次,一些常见的转换关系会变得很自然:

一个实用的捷径是:把二进制数从右往左每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).