Oh MyUtils

进制转换器 - 二进制、八进制、十进制、十六进制 在线

即时在二进制、八进制、十进制和十六进制间转换数字。交互式位可视化和位运算计算器。

常见问题

什么是进制转换器?

进制转换器是一种在不同进制系统之间转换数字的工具。计算机中最常见的进制是二进制(基数2,使用0和1)、八进制(基数8,使用0-7)、十进制(基数10,使用0-9)和十六进制(基数16,使用0-9和A-F)。例如,十进制数255在二进制中是11111111,八进制中是377,十六进制中是FF。

如何使用这个进制转换器?

在四个输入字段(二进制、八进制、十进制或十六进制)的任意一个中输入数字,所有其他字段将立即更新为转换后的值。使用下方的位可视化来查看和交互各个位。点击任意位来切换其开关状态。根据需要调整位宽(8/16/32/64)和有符号/无符号模式。

我的数据安全吗?是否会发送到服务器?

所有数字转换和位操作均100%在您的浏览器中使用JavaScript执行。没有任何数据传输到服务器。该工具使用浏览器内置的BigInt进行精确计算。您的数字永远不会离开您的设备。

什么是二进制补码?有符号模式如何工作?

二进制补码是计算机用二进制表示负整数的标准方法。在有符号模式下,最高位(最左边)作为符号位:0表示正数,1表示负数。例如,在8位有符号模式中,11111111表示-1(不是255),10000000表示-128。

什么是位运算?什么时候有用?

位运算直接操作数字的各个位。AND(&)用于屏蔽特定位,OR(|)用于设置位,XOR(^)用于切换位,NOT(~)用于翻转所有位,移位运算符(<<、>>)用于乘以/除以2的幂。它们在系统编程、网络协议、图形编程和密码学中至关重要。

十六进制为什么使用字母A-F?

十六进制(基数16)需要16个唯一数字。由于我们的十进制系统只提供0-9共10个符号,十六进制使用字母A到F来表示值10到15。每个十六进制数字恰好对应4个二进制位(半字节),所以FF = 11111111 = 255。

如何选择正确的位宽?

根据您使用的数据类型选择位宽:8位用于字节和ASCII字符(范围0-255),16位用于短整数(范围0-65535),32位用于标准整数、IPv4地址和颜色值(范围0-42.9亿),64位用于大整数、内存地址和时间戳。如果不确定,使用32位。

代码示例

// Number base conversion in JavaScript

// Convert between bases
function convertBase(number, fromBase, toBase) {
  const decimal = BigInt(parseInt(number, fromBase));
  return decimal.toString(toBase).toUpperCase();
}

console.log(convertBase('FF', 16, 2));     // "11111111"
console.log(convertBase('11111111', 2, 16)); // "FF"
console.log(convertBase('255', 10, 8));     // "377"

// Bitwise operations
const a = 0b11001010, b = 0b10110001;
console.log(`AND: ${(a & b).toString(2).padStart(8, '0')}`);
console.log(`OR:  ${(a | b).toString(2).padStart(8, '0')}`);
console.log(`XOR: ${(a ^ b).toString(2).padStart(8, '0')}`);
console.log(`NOT: ${((~a) & 0xFF).toString(2).padStart(8, '0')}`);

// Two's complement
function toTwosComplement(value, bits) {
  if (value >= 0) return value;
  return (1 << bits) + value;
}
console.log(toTwosComplement(-1, 8).toString(2)); // "11111111"

相关工具