如何使用十六进制计算器
- 输入两个十六进制数,例如
8AB和B78。可以带负号,也可以带0x等前缀。 - 选择运算方式。结果会立即以十六进制、十进制和二进制显示;做除法时还会显示余数。
- 对于负数结果和 NOT 运算,请选择位宽(8、16、32 或 64 位)以查看补码值。
十六进制加法怎么算
和十进制一样,从右往左逐位相加。唯一的区别是:某一位的和大于或等于 16 时,写下“和减 16”,并向高位进 1(逢十六进一)。示例:8AB + B78。
| 位 | 数字 | 和 | 写下 | 进位 |
|---|---|---|---|---|
| 16⁰ | B + 8 | 11 + 8 = 19 | 3 | 1 |
| 16¹ | A + 7 + 1 | 10 + 7 + 1 = 18 | 2 | 1 |
| 16² | 8 + B + 1 | 8 + 11 + 1 = 20 | 4 | 1 |
| 16³ | 进位 | 1 | 1 | – |
从最下面一行往上读出写下的数字(最高位在前),得到 1423。用十进制验算:2219 + 2936 = 5155 = 十六进制 1423。
十六进制减法、负数结果与补码
减法需要借位:如果被减数的某一位比减数小,就向高位借 1,当作 16(借一当十六)。B78 − 8AB:8 − B 需要借位,8 + 16 − 11 = 13 = D;接着 7 − 1 − A 也需要借位,6 + 16 − 10 = 12 = C;最后 B − 1 − 8 = 2,所以结果是 2CD。
如果第二个数更大,结果就是负数。计算器会用负号表示(5 − 8 = −3),同时给出计算机实际存储的位模式:在 8 位补码中,−3 是 2⁸ − 3 = 253 = FD,在 16 位中是 FFFD。手算时,把一个数的所有位取反再加 1,即可得到它的相反数:03 = 0000 0011 → 1111 1100 → 1111 1101 = FD。
位运算:AND、OR、XOR、NOT 与移位
位运算会逐位比较两个数,因此程序员常用它来处理标志位、掩码和权限。以 3C = 0011 1100 和 0F = 0000 1111 为例:
| 运算 | 规则 | 结果 |
|---|---|---|
3C AND 0F | 两位都是 1 时结果才为 1 | 0C |
3C OR 0F | 至少有一位是 1 时结果为 1 | 3F |
3C XOR 0F | 两位不同时结果为 1 | 33 |
NOT 3C(8 位) | 每一位都取反 | C3 |
3C << 1 | 左移 = 乘以 2 | 78 |
3C >> 2 | 右移 = 除以 4 | 0F |
常见问题
十六进制乘法怎么算?
方法和十进制相同,只是每个部分积都要用十六进制表示。通常更简单的做法是先转换成十进制,相乘后再转换回来:1A × 10 = 26 × 16 = 416 = 1A0。乘以十六进制的 10(即 16)只需在末尾补一个 0,就像十进制中乘以 10 一样。
十六进制除法的结果是什么样的?
计算器执行整数除法,并同时显示商和余数:1423 ÷ 10 = 142 余 3。除数为零时会提示错误。
为什么不同位宽下 NOT 的结果不一样?
NOT 会翻转固定长度数值中的每一位,所以结果取决于总共有多少位:NOT 3C 在 8 位下是 C3,在 16 位下却是 FFC3。选择“自动位宽”时,计算器会选用能容纳该数的最小标准位宽(8、16、32 或 64 位)。
十六进制计算器能处理大数吗?
可以。所有运算都使用任意精度整数,因此 64 位、128 位甚至更长的数值都能精确计算,不会像普通计算器那样出现溢出或舍入误差。