结果为:
5=101
-5=11111111111111111111111111111011
101之所以前面没有东西,因为前面都是0,所以隐蔽掉了
原因:
在计算机中都是用负数的绝对值—>取反—>+1(补码),作为这个-5在计算机中的表示!
比如说:
-5的绝对值-->5
5二进制—>00000000,00000000,00000000,00000101
取反—>11111111,11111111,11111111,11111010
最后加上1
11111111,11111111,11111111,11111010
+ 00000000,00000000,00000000,00000001 (1)
= 11111111,11111111,11111111,11111011 (表示-5)
补充:
正数的原码,补码,反码都是相同的
在计算机中,你比如说看到某个2进制首位是0.则表示是正数。。1表示为负数
比如说我们知道在java中byte类型表示的是8位
-->00000000到11111111
我们可以把它拆成:
1、00000000-011111111 2、10000000-11111111
首先我们看第一个:
00000000-011111111 由于首位是0,因此计算机知道这个是正数
所以转换成十进制是:0-127
再看第二个:
10000000-11111111 由于首位是1,所以我们知道这个是负数(用补码来表示)
首先看10000000,我们先取反:
10000000(2)-->01111111
然后再加上1:
01111111+01111111=10000001
其次装换成10进制:
1000001(2)-->128(10)
最后转换成为负数:
所以结果为-128
因此Byte是由-128-->127
二进制加法:
1+0=1 1+1=10 ; 1+10=11 ;10+10=100 ; 1+11=100 ; 10+11=101;
二进制减法:
0-0=0 ; 1-0=1 ;0—1=1 ;1-1=0;10-1=1。