java byte取值范围是什么,让我们一起了解一下?
java中byte类型数据的取值范围为-128~127,因为在java中byte类型的数据,是存储在计算机内存中占1个字节(即0或者1表示的8位二进制数),数据在计算机中都是按照补码形式表现,因此有了原码、反码、补码的基本概念。
那么-128 和 127 这两个数是怎么计算的呢?
首先我们要先了解原码、反码、补码的基本概念。
1、原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
2、反码表示法规定:正数的反码与其原码相同,负数的反码是对其原码逐位取反,但符号位除外。
3、补码表示法规定:正数的补码与其原码相同,负数的补码是在其反码的末位加1。
然后再来了解原码、反码、补码的对应关系?
带符号的数据二进制表示的形式最高位代表符号类型,其中,0表示正数,1表示负数。
对于正整数而言,原码、反码和补码是相同的,比如127。
符号位 数值位
原码表示为: 0 1111111
反码表示为: 0 1111111
补码表示为: 0 1111111
即127在计算机中表示为01111111。
对于负整数而言,反码表示为原码的最高位不变,其他位反转(就是0变为1,1变为0),补码表示反码加1。比如-127。
符号位 数值位
原码表示为: 1 1111111
反码表示为: 1 0000000
补码表示为: 1 0000001
即-127在计算机中表示为10000001。
那么最大范围和最小范围的计算是怎么来的?
1、最大范围
这个比较简单就是计算01111111的十进制数,通过二进制计算十进制:
max = (2^0+2^1+2^2+...+2^6),很容易看出这是一个等比数列,通过等比数列求和公式计算为:max=2^0(1-2^7)/1-2=2^7-1=127
2、最小范围
对于正整数0,二进制表示为00000000
对于负整数-0,二进制表示为100000000(补码) 10000000(原码)
由于正整数0和负整数-0相等,但是它们的二进制表示形式却不一样并且-0还是9位二进制表示的,所以为了解决这个问题,就让10000000表示为-128即min=-128。
具体代码展示如下:
/** 这里是Java源码 * A constant holding the minimum value a {@code byte} can * have, -27. */ public static final byte MIN_VALUE = -128; /** * A constant holding the maximum value a {@code byte} can * have, 27-1. */ public static final byte MAX_VALUE = 127;
以上就是小编今天的分享了,希望可以帮助到大家。