Java中基本类型的取值范围

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:29   1879   0

在讲解基本类型的取值范围之前,先讲讲二进制怎么转换为十进制(算取值范围的时候会用到)。

首先二进制有带符号的二进制和不带符号的二进制。

比如:1111

如果它是不带符号的二进制,那么它的十进制值 = 2^3 + 2^2 + 2^1 + 2^0 = 2^4 - 1 = 15

如果它是带符号的二进制,那么最高位(千位)就是符号位,1代表负数,0代表正数。那么负的二进制怎么换算为十进制呢?首先要把除符号位的所有位按位取反再加1(算出来是1001),然后在算它的十进制值 = -2^0 = -1


Java中基本类型的取值范围

基本类型字节数位数最大值最小值
byte1byte8bit2^7 - 1-2^7
short2byte16bit2^15 - 1-2^15
int4byte32bit2^31 - 1-2^31
long8byte64bit2^63 - 1-2^63
float4byte32bit3.4028235E381.4E - 45
double8byte64bit1.7976931348623157E3084.9E - 324
char2byte16bit2^16 - 10

其实,这些取值范围不需要死记,可以通过位数计算出来,下面举两个例子(byte和char)说明一下

byte的情况:

byte占8位,而且有正有负。最大值当然就是01111111 = 2^7 - 1。因为负的二进制有个按位取反再加1的操作,所以最小值是10000000,按位取反后为11111111,再加1后为110000000 = -2^7

char的情况:

char占16位,而且没有负值。所以最小值是0。最大值是1111111111111111 = 2^16 - 1

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP