进制转换器
在二进制、八进制、十进制、十六进制以及 2 到 36 的任意进制之间转换任意大小的整数,并给出其补码形式。
| 位宽 | 十六进制 | 二进制 | 按有符号读取 | 按无符号读取 |
|---|---|---|---|---|
| 8 位 | ||||
| 16 位 | ||||
| 32 位 | ||||
| 64 位 |
把工具固定在这里,会保存在此浏览器中。
固定一个工具,它的贴纸就会出现在这里。
在二进制、八进制、十进制、十六进制以及 2 到 36 的任意进制之间转换任意大小的整数,并给出其补码形式。
| 位宽 | 十六进制 | 二进制 | 按有符号读取 | 按无符号读取 |
|---|---|---|---|---|
| 8 位 | ||||
| 16 位 | ||||
| 32 位 | ||||
| 64 位 |
进制(又称基数,radix)是一种位置记数法所使用的不同数字的个数。十进制有十个,二进制有两个,八进制有八个,十六进制有十六个,借用 a 到 f 表示十到十五。更高的进制(最高 36)沿字母表一直延续到 z。
硬件以二进制存储数字。十六进制是它的紧凑写法,因为一位十六进制数字正好是 4 个比特,两位正好是一个字节。八进制至今仍用于 Unix 文件权限,其中每一位数字对应 3 个比特。
此页面上的每个字段都显示同一个整数。编辑其中任意一个,其余字段都会随之更新。
数字之间可以用空格或下划线分隔,例如 1111_0000 或 1 000 000,数字前也可以带负号。只要前缀中的字母本身不是该字段的数字,0b、0o 和 0x 前缀就会分别选择二进制、八进制和十六进制:在十进制字段中输入 0xff 会读作 255,而在十六进制字段中输入 0b1 则是十六进制数 B1。
转换使用 JavaScript 的 BigInt,这是一种任意精度的整数类型,因此不会有任何舍入。唯一的大小限制来自浏览器 JavaScript 引擎对 BigInt 的限制,超出限制的数会在其字段中提示。大于 9,007,199,254,740,991 的数(普通 JavaScript 数字从这里开始丢失精度)也能精确转换。仅支持整数,不支持小数。
各字段把负数显示为负号加上它的绝对值。计算机的存储方式则不同:在补码中,负值存储为该值加上 2 的位宽次幂。8 位时这个幂是 256,所以 -1 存储为 255,即 ff;-128 存储为 128,即 80。
只要值能容纳,表格就会显示它在 8、16、32 和 64 位下的位模式,以及这个位模式分别按有符号整数和无符号整数读回时表示的值。这就是 255 和 -1 在 8 位下共用同一个位模式 ff 的原因。
每一位二进制数字代表 2 的一个幂,从最右边的 1 开始。把数字为 1 的那些位对应的幂相加:1011 是 8 + 2 + 1,即 11。
一位十六进制数字正好表示 4 个比特,所以一个字节总是两位十六进制数字。这让内存转储、颜色、哈希和位掩码比二进制短得多,又能轻松对应回比特。
工具本身不设限制。它使用任意精度整数,因此几千位的数也能精确转换。很长的输入需要更长的计算时间,而且每种浏览器的 JavaScript 引擎对单个整数都有大小上限,超过上限的数会在其字段中提示。
补码是几乎所有计算机存储有符号整数的方式。最高位带有负权重,因此 8 位值的范围是 -128 到 127,而 -1 存储为 8 个 1。
它会在独立窗口中打开,离线时也能使用。
要安装,请点按“分享”按钮,然后选择“添加到主屏幕”。