进制转换器
在二进制、八进制、十进制、十六进制以及 2 到 36 的任意进制之间转换,支持大数、补码和位视图。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const value = 255n
console.log([2, 8, 16].map((base) => value.toString(base)).join(' '))功能
在二进制、八进制、十进制、十六进制以及 2 到 36 的任意进制之间转换数字。长数字的每一位都会保留,可显示 8、16、32 或 64 位的补码模式,并能逐位翻转。
使用方法
- 在输入框或任意一行中输入或粘贴数字。
- 选择输入进制、2 到 36 的自定义进制和位宽。
- 查看其他行,点击某一位翻转它,然后复制结果。
示例
255 的二进制是 1111 1111,八进制是 377,十六进制是 FF。
8 位的 -1 用补码表示为 1111 1111,把 FF 按 8 位有符号读取又是 -1。
须知
- 支持前缀
0b、0o、0x,以及数字之间的下划线和空格。 - 数字不限于 64 位或 2^53;只有值能放入所选位宽时才显示位视图。
- 打开将输入按补码模式读取,可把
FF读作-1而不是 255。
二进制如何表示负数?
计算机用补码存储负数:把所有位取反再加一。8 位时,-1 是 1111 1111,-128 是 1000 0000。同一模式按无符号读取是 255 或 128,因此位宽和符号都很重要。
常见问题
为什么这个转换器能处理大于 2^53 的数?
许多转换器使用浮点数,超过 9,007,199,254,740,992 就会丢失位数。本工具使用任意精度整数,因此长数字的每一位都会保留。
0x、0b 和 0o 前缀是什么意思?
它们在源代码中标明进制:0x 表示十六进制,0b 表示二进制,0o 表示八进制。可以输入也可以省略。数字之间的下划线和空格会被忽略。
这个工具会把我的数字发送到别处吗?
不会。一切都在浏览器中完成,您输入的内容不会发送到我们的服务器。