通过MCP连接 →

输入计算

数学公式

广告

结果

差值(二进制)
1000
= 8 in decimal
第一个数(十进制) 13
第二个数(十进制) 5
差值(十进制) 8

什么是二进制减法计算器?

这个工具可以用一个二进制(即二进制,base-2)数减去另一个,并同时给出二进制和十进制两种形式的答案。二进制只使用 0 和 1 两个数字,每一位代表 2 的不同次幂。手算二进制减法时需要在各列之间逐位借位,很容易算错——而本计算器能瞬间完成运算,并用十进制算术对结果进行验证。

如何使用

在第一个输入框填入被减数(minuend),在第二个输入框填入减数(subtrahend),两者都只能由 0 和 1 组成。点击计算,即可看到二进制差值,以及每个输入和最终结果对应的十进制数值。如果减数比被减数大,结果会显示为带负号的二进制数(即在前面加上一个减号)。

计算公式详解

最简单可靠的方法是:先把每个二进制字符串转换成十进制整数,做普通的减法运算,再把差值转换回二进制:

$$\text{结果} = \text{转二进制}\left( \text{解析二进制}(a) - \text{解析二进制}(b) \right)$$

举例来说,二进制数 1010 等于 \(1\cdot8 + 0\cdot4 + 1\cdot2 + 0\cdot1 = 10\)(十进制)。这种方式省去了手动借位的麻烦,得到的结果却完全相同。

实例演算

用 1010 减去 11。先做转换:\(1010_2 = 10_{10}\),\(11_2 = 3_{10}\)。然后计算 $$10 - 3 = 7.$$ 再把 7 转换回二进制得到 \(111_2\)。因此 \(1010 - 11 =\) 111

如何手工进行二进制减法(借位法)

直接二进制减法的工作原理就像十进制减法,但在二进制(基数2)中,每一列只能包含0或1。关键思想是借位:当你需要从0中减去1时,你从左边的下一列借1,使当前列变成\(10_2\)(在十进制中是2),因此\(10_2 - 1_2 = 1_2\)。

  1. 在右边对齐数字。将较大的值(被减数)写在上面,较小的值(减数)写在下面,对齐最不重要的位。用前导零填充较短的数字,使两者宽度相同。
  2. 从右到左,一次一列地工作。在每一列中计算上面的位减去下面的位。
  3. 应用列规则:\(0-0=0\)、\(1-0=1\)、\(1-1=0\),以及\(0-1\)需要借位。
  4. 借位规则:对于\(0-1\),从左边的下一列借1。当前列变为\(10_2 - 1 = 1\),你从被借出的列中减去1(如果该列本身是0,你必须再次借位,向左连锁)。
  5. 从底行读取结果,丢弃任何前导零。

详细例子:\(1010_2 - 0011_2\)。两者都填充为四位。十进制检验:\(10 - 3\)。

  1. 第0列(最右边):上面0,下面1 → \(0-1\)需要借位。从第1列借1,得到\(10_2 - 1 = 1\)。结果位 = 1。第1列的上面位从1降为0。
  2. 第1列:借出后,上面是0,下面是1 → \(0-1\)需要借位。从第2列借1,得到\(10_2 - 1 = 1\)。结果位 = 1。第2列的上面位从0开始...它是0,所以借位链到第3列,使第2列读作\(10_2\)然后借出1留下1。
  3. 第2列:经过连锁借位后它持有1,下面是0 → \(1-0=0\)。结果位 = 0
  4. 第3列:上面本来是1,但它借给了第2列,留下0;下面是0 → \(0-0=0\)。结果位 = 0

按列从底部到顶部读取得到\(0111_2\),即111\(_2\),等于十进制的\(7\) — 与\(10 - 3 = 7\)相符。

更多详细例子

每个例子都显示了二进制减法及其十进制等价物,这样你可以验证算术运算。

二进制减法 十进制检验 结果(二进制) 结果(十进制)
\(1101_2 - 101_2\) \(13 - 5\) 1000\(_2\) 8
\(11_2 - 1010_2\) \(3 - 10\) \(-111_2\) \(-7\)
\(110_2 - 110_2\) \(6 - 6\) \(0_2\) 0

例子1 — \(1101_2 - 101_2\)。将减数填充为\(0101_2\)。从右边逐列进行:\(1-1=0\);\(0-0=0\);\(1-1=0\);\(1-0=1\)。这给出\(1000_2 = 8\),确认\(13 - 5 = 8\)。

例子2 — \(11_2 - 1010_2\)(负数结果)。这里减数(\(10\))大于被减数(\(3\)),所以答案是负数。交换并从较大的数中减去较小的数:\(1010_2 - 0011_2 = 0111_2 = 7\),然后恢复符号得到\(-111_2 = -7\)。这与\(3 - 10 = -7\)相符。

例子3 — \(110_2 - 110_2\)(相等的值)。每一列都减为0,没有借位:\(0-0\)、\(1-1\)、\(1-1\)都得到0,所以差是\(0_2 = 0\)。

关键术语

被减数
被减去的数 — 写在上面的值。在\(1010_2 - 11_2\)中,被减数是\(1010_2\)。
减数
要被减去的数 — 写在下面的值。在\(1010_2 - 11_2\)中,减数是\(11_2\)。
减法的结果:\(\text{被减数} - \text{减数}\)。
借位
当一列需要\(0-1\)时,从下一个更高的列取1,使当前列变为\(10_2\)(值2),从而允许\(10_2 - 1 = 1\)。被借出的列减去1,如果该列也是0,借位可能进一步向左连锁。
二进制/基数2
一个只使用数字0和1的位置记数系统,其中每个位置值是2的幂(\(\dots, 8, 4, 2, 1\))。
位(二进制数字)
单个基数2数字,可以是0或1。一组位代表一个更大的数;例如\(1010_2\)有四位。
二补数
计算机表示有符号整数的常见方式。负值通过反转其幅度的所有位并加1来形成,这允许减法在固定位宽内作为加法的否定数来执行。
符号-幅度
一种替代的有符号表示法,其中最左边的位表示符号(0 = 正,1 = 负),其余位给出幅度。易于读取,但它有两种零的编码,对于算术运算不如二补数方便。

常见问题

结果可能是负数吗? 可以。如果减数较大,计算器会返回一个带负号的二进制数,例如 -101。

如果我输入了无效字符怎么办? 二进制中只有 0 和 1 两个数字有效。任何非二进制字符都会被当作 0 处理。

这和二进制补码(two's complement)减法一样吗? 十进制数值是一致的,但本工具采用的是「符号-数值」表示法(即用一个减号表示负数),而不是固定位宽的二进制补码表示法。

最后更新: