怎么计算byte,short,int等数据类型的取值范围

一个byte由八个位组成,符号位 + 数值位,如x0000000,其中第1位是符号位,后面的7位表示数值,第1位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即20+ 21+……+26=127;最小的负数,同理,为1 1111111,即==-127==。
到这里可能有小伙伴开始纳闷了明明是-127那怎么变成-128了呢。
怎么计算byte,short,int等数据类型的取值范围

那我们重新来次。
1、负数的绝对值是反码,byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111十进制表示形式为127
2、最大正数是01111111,最小负数11111111的反码10000000
3、因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,这个1既是符号位也是数值位,而10000000的十进制表示是128,所以最小负数是-128
4、由此可以得出byte的取值范围是-128到+127
同理可以推出short和int等。。。。

在计算机中程序都是按照补码运行的。而且0有+0和-0两种。

知识拓展

在计算机内,定点数有3种表示法:原码、反码和补码。
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
表示方法:
1、原码的表示:在数值前直接加一符号位的表示法。
2、反码的表示:
(1)正数:正数的反码与原码相同。
(2)负数:负数的反码,符号位为“1”,数值部分按位取反。
3、补码的表示:
(1)正数:正数的补码和原码相同。
(2)负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1