本帖最后由 陈冲 于 2012-7-11 22:42 编辑
负数的补码是该数绝对值的原码按位取反,然后 整个数加1
Java使用补码来表示二进制数,在补码表示中 ,最高位为符号位,正数的符号位为0,负数为1
对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。 如-42的补码为11010110 (00101010 按位取反 11010101 +1=11010110 )
1.确定byte是1个字节,也就是8位
2.最大的应该是0111 1111,因为第一位是符号位,0表示正数
3.最小的应该是1000 0000,同理,表示负数最小的(1111 1111是最大的负数-1)
4.0111 1111即127
5.1000 0000按照上面的解释为先减一,得到0111 1111,然后按位取反得到1000 0000,该结果为欲求负数的绝对值,所以结果是-128(和概念反着来求出该负数)
简单来说byte类型的取值范围
用补码表示为
1000 0000~0111 1111
用原码表示为
-1000 0000~0111 1111(-128~127) |