原码反码补码
253
- 176
—————
77
从右边一列开始,首先6比3大,所以从5借1,这样子变成了13-6=7,5被借了1,变成4.
继续,4比7小,所以继续从2借1,14减7等于7.
2被借1后成为1,1减1变成0,最后的结果为77
被减数
- 减数
————
差
假如减数是3位数:176,而三位数最大是999,这样子就不存在需要借位了。
999
-176
———
823
如果是四位数的话,就用9999,五位数用99999去减。
253
+823
_______
1076
再加一个1,并且减去1000:
1076
+
1
-1000
_________
77
原始题目是253-176+1000-1000
然后经过修改253
-176 +999+1-1000
再进行变换
253+(999-176)+1-1000
非常简单对吧?这样子虽然看起来绕了一圈,但是你发现不需要借位就可以实现减法了。
再来一个减法案例。
刚刚是256-176,被减数比减数大。
再次我们反过来:176-256
176-253=-77
176-253+1000-1000
176-253+999+1-1000
176+(999-253)+1-1000
176+746+1-1000
922+1-1000=923-1000=922-999=-77 (到了这一步,可看出结果是负数,故把两数位置交换,这样做减法时就不需要借位了)
100-10=99-9=98-8
253-176
1111 1101 - 1011
0000
1111 1101 - 1011 0000 + 1111 1111 -1111 1111
1111
1101 + (1111 1111 - 1011 0000) -1111 1111
1111 1101 + 0100 1111 -1111
1111
101001100 - 1111 1111
1 01001101 - 1 0000 0000 (全部加1)
=0100
1101
20-13
1 0100 + 0011 -1
0000
那如果是13-20呢?结果是负数,那么你可以把13-20理解成20-13
最后的结果加一个负号就可以了。
=-0111
但是我们都知道,虽然用数学表示,人类一样可以看懂 -0111
这是一个负的二进制数。
但是如果要用电路来表示的话,电路只能表示0和1。所以,必须只能通过0和1,来表示这个数到底是正数还是负数。
并且能够实现计算。
这些聪明的科学家就想到了一个办法。
比如现在有8个加法器串联成了一个8位的加法机。
举例现在要计算5+3
0000
0101
0000 0011
============
0000 1000
8个开关都没闭合表示 0000
0000 8个开关都闭合表示 1111 1111
对应的最小表示0,最大表示十进制 255。
所以8个开关一共可以代表256个数字。
分别设计了有符号位和无符号数两种计算规则。
当需要用到负数的时候,就按照有符号模式。
当只用到正数的时候,既可以使用有符号模式,也可以使用无符号模式。
5-3=5+(-3)
0000 0101
1111 1101
==========
1
0000 0010
-1-127=(-128)
-1+(-127)=
-1的原码[1000
0001]
加上
-127的原码[1111 1111]
等于
-1的补码[1111
1111]
加
-127的补码[1000 0001]
补码结果
[11000
0000]
所以说补码[1000 0000]代表-128