首先,明确一些数据类型的二进制位数
byte有1字节即8位 最高位表示符号0表示正,1表示负数
因其有8位,最大数位(除去符号位)1/0 1111 111
2^0+2^1+..+2^6 = 2^7-1=127
即范围为-127-127之间
那-128是怎么来的呢。
其实-128只是一个硬性规定,表示-0
****************************************************************************************
原码+反码+1=0(因为相加多出的高位1计算机已无法表示,计算机的显示结果为0)
补码 = 反码 +1
则:-原码 = 补码 也就是说,用补码可以很好的用计算机表示负数(只需要最高位的符号位表示,然后其他的按正数处理就好)
计算机中是用补码进行运算的 (这样绕过了减法运算,只做加法和相关的位运算)
*********************************************************************
只需要记住,bute类型-128-127,short只有3万多点。int 有21亿即可
===================================================================
正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反
负数的补码是符号位不变,反码+1