大家好,本次讲述二进制的加减法运算,废话不多说开始吧!
首先了解原码、反码和补码。
原码:二进制本生的模样,改啥就是啥,如1101原码就是1101。
反码补码的由来:
0000 0001 0010 0011 0100 0101 0110 0111
1000 1001 1010 1011 1100 1101 1110 1111
由于计算机没有正负之分,所以将二进制分为一半0开头表示正数,1表示负数所以很多类型的取值范围中负数比正数多1。
0000(0) 0001(1) 0010(2) 0011(3) 0100(4) 0101(5) 0110(6) 0111(7)
1000(-8)1001(-7)1010(-6)1011(-5)1100(-4) 1101(-3)1110(-2)1111(-1)
1000 1111 1110 1101 1100 1011 1010 1001
为了计算负数所以有了补码(取反加1),所以有了反码补码的概念。又因为在一定范围正负有取值边界所以计算机中负数的边界值补码加1后得到的是0,正数的边界值加一是负数的最小值。
以下是反码补码的计算规则:
反码:二进制反码则是所有01取反通俗易懂,如1101反码是0010。
补码:重点来了,补码则是对取反的数加一就得到补码了,如1101的补码是0011。
为什么补码重要,重要在二进制的减法运算上,可以通过补码将减法变加法进行计算。
1101=1101=1101(这是正数的反码和补码)
1101=0010=0011(这是负数的反码和补码)
具体过程如下:
1001+0011(不带符号,9+3=12)
1 0 0 1
+0 0 1 1
1 1 0 0(12)
加法不多说,下面是减法:
1001-0011(不带符号,9-3=6)
1 0 0 1
-0 0 1 1
0 1 1 0(6)
0011-1001(不带符号,3-9=-6)
0 0 1 1
-1 0 0 1
11 0 1 0(???这是几)
所以就得使用补码来计算
0011-1001=0011+(-1001)=0011(正数补码)+0111(负数补码)(不带符号,3-9=-6)
0 0 1 1
+0 1 1 1
1 0 1 0(由于是负数所以得补回去,即0110,可能不是很懂接下来看带符号的)
0011-1001=0011+(-1001)=00011(正数补码)+10111(负数补码)(带符号符号不取反,3-9=-6)
0 0 0 1 1
+1 0 1 1 1
1 1 0 1 0(由于是负数所以得补回去,即10110,怎么通过二进制判断正负就看符号位是不是1,1则负0则正)
再举个栗子吧
1101-0101=1101+(-0101)=01101+11011(带符号位,13-5=8)
0 1 1 0 1
+ 1 1 0 1 1
1 0 1 0 0 0(由于符号位是0,即01000,借的就抛弃所以不管第一位的1了)
上述就是二进制的加减法,希望对你们有所帮助!