在计算机中,由于没有减法运算,所以我们都是将减法运算转换成加法运算,转换的形式就是将原码转换成补码。
原码 反码 补码
1111 1111(-127) 1000 0000 1000 0001
**********
1000 0001(-1) 1111 1110 1111 1111
1000 0000(?) 1111 1111 1000 0000
0000 0000(0) 0000 0000 0000 0000
0000 0001(1) 0000 0001 0000 0001
**********
0111 1111 0111 1111 0111 1111
原码1000 0000在命名规则上是-0,所以貌似1000 0000和0000 0000一样都为0,但我们永远要记住,计算机运算是进行补码之间的运算,1000 0000只是其书面表达,我们接下来看看1000 0000的是如何计算出来的,1000 0000的反码是1111 1111,然后加1,变成了11000 0000,因为byte只有8bite的存储空间,所以第二个1去掉(符号位不变),这样的话11000 0000就变成了1000 0000,减少了128,所以原码为1000 0000的byte,在转化为补码的过程中减少了128,-0-128=-128,因为计算机运算全是以补码的形式进行的,所以1000 0000就代表-128,而不是0,所以byte的取值范围为什么是-128-127,而不是-127-127。