数值在计算机上计算是以二进制数计算的。
而数值有原码、反码、补码。
而计算机进行计算的时候会以补码的形式计算。
这是为什么呢?
看过一遍博客,说到计算机是没有减法运算的,只有加法运算,而且是依据补码计算的;
例如:-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
而其他的基本数据类型也因如此推算。