数值在计算机上计算是以二进制数计算的。

而数值有原码、反码、补码。

而计算机进行计算的时候会以补码的形式计算。

这是为什么呢?j_0019.gif

看过一遍博客,说到计算机是没有减法运算的,只有加法运算,而且是依据补码计算的;

例如:-7,怎么表示呢?他有一个符号位1,111

先说说正数,正数很简单,原码反码补码都是一样的,没有区别。

而负数则有所不同,负数的话,显示的也是补码,给出的是以1开头的一串数字

要知道其表示的含义则需要以下几步完成

1取补码的绝对值(去掉补码的第一个数字,也就是1)

2取反

3末尾加一

得到的是一个数值

例子:10111010

1:0111010

2:1000101

3:1000110

这个值是70

所以这个补码是-70

再考虑到byte的范围问题,byte占一个字节,也就是8位,所以其能表示的最大范围是1000 0000——0111 1111

1000 0000是补码,或许你会考虑为什么不是1111 1111,这里要注意这是补码,可以将其化为十进制表示

1000 0000    ——000 0000——111 1111——1000 0000——128——  -128

1111 1111    ——111 1111——000 0000——000 0001——1——-1

可以看出-128<-1的,而正数则是表达127,所以byte的范围就是-128~127

而其他的基本数据类型也因如此推算。