java中的Int范围
2013-12-16 10:33
120 查看
二进制值(1字节) 十进制值
1000 0000 -128
1000 0001 -127
1000 0010 -126
1000 0011 -125
... ...
1111 1110 -2
1111 1111 -1
首先我们看到,从-1到-128,其二进制的最高位都是1(表中标为红色),正如我们前面的学。
然后我们有些奇怪地发现,1000 0000 并没有拿来表示 -0;而1000 0001也不是拿来直观地表示-1。事实上,-1 用1111 1111来表示。
怎么理解这个问题呢?先得问一句是-1大还是-128大?
当然是 -1 大。-1是最大的负整数。以此对应,计算机中无论是字符类型,或者是整数类型,也无论这个整数是几个字节。它都用全1来表示 -1。比如一个字节的数值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和现实中的计算结果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。这样一直减下去,当减到只剩最高位用于表示符号的1以外,其它低位全为0时,就是最小的负值了,在一字节中,最小的负值是1000 0000,也就是-128。
Java中的Int的最大最小是怎么算出来的呢?
int型的最大值:2147483647 16进制:0x7FFF FFFF
int型的最小值:-2147483648 16进制:0x8000 0000
实际上:在java中int型占4个字节,那么它能表示的就是32位的范围。但是java不像C/C++那样分unsigned(无符号数和有符号数)所有在java中正负数各占一半:即2的31次方减1是最大的int型的范围,负的2的31次方是最小的负数范围。
1000 0000 -128
1000 0001 -127
1000 0010 -126
1000 0011 -125
... ...
1111 1110 -2
1111 1111 -1
首先我们看到,从-1到-128,其二进制的最高位都是1(表中标为红色),正如我们前面的学。
然后我们有些奇怪地发现,1000 0000 并没有拿来表示 -0;而1000 0001也不是拿来直观地表示-1。事实上,-1 用1111 1111来表示。
怎么理解这个问题呢?先得问一句是-1大还是-128大?
当然是 -1 大。-1是最大的负整数。以此对应,计算机中无论是字符类型,或者是整数类型,也无论这个整数是几个字节。它都用全1来表示 -1。比如一个字节的数值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和现实中的计算结果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。这样一直减下去,当减到只剩最高位用于表示符号的1以外,其它低位全为0时,就是最小的负值了,在一字节中,最小的负值是1000 0000,也就是-128。
Java中的Int的最大最小是怎么算出来的呢?
int型的最大值:2147483647 16进制:0x7FFF FFFF
int型的最小值:-2147483648 16进制:0x8000 0000
实际上:在java中int型占4个字节,那么它能表示的就是32位的范围。但是java不像C/C++那样分unsigned(无符号数和有符号数)所有在java中正负数各占一半:即2的31次方减1是最大的int型的范围,负的2的31次方是最小的负数范围。
相关文章推荐
- java中int,float,long,double取值范围,内存泄露
- Java中short、int、long、float、double的取值范围
- int、 long、 float、 double范围(java)
- 注意java int整形变量的取值范围
- C/C++/JAVA中short,int,long等整型表示范围的比较
- java中int,float,long,double取值范围,内存泄露
- [厉害了,我的JAVA基础](四)int 和 Integer 有什么区别?Integer的值缓存范围
- java中int取值范围是怎么计算的?
- java 中 byte,short,int,long的取值范围
- 关于java中float和int 精度和范围的问题
- 写了一个10进制转换程序,无意发现JAVA int 类型的范围原来是这个!
- java中short、int、long、float、double取值范围
- java整型byte,short,int,long取值范围大小
- java整型byte,short,int,long取值范围大小
- java中short、int、long、float、double取值范围
- Java中int,float,long,double取值范围,内存泄露
- java中short、int、long、float、double取值范围
- java里short,int,long,float,double范围及可写位数
- Java中int的取值范围
- JAVA的int类型如果超过最大范围会变成负值