Java中数据类型的取值范围

本文详细介绍了Java中各种整数数据类型的取值范围及其底层存储原理,并解释了符号位如何影响数值范围。此外还介绍了无符号类型char的取值范围。

整数数据类型的取值范围

我们都知道计算机的底层是二进制,也知道不同的整数类型存储值的范围不同,可这些数值在计算机底层是怎样存储的呢?数值范围又是怎么计算出来的呢?
下面以java来进行举例:

byte    1个字节 (8bit)     -2^7~2^7-1  
short   2个字节 (16bit)    -2^16~2^16-1
int     4个字节 (32bit)    -2^31~2^31-1
long    8个字节 (64bit)    -2^63~2^63-1

整数数据类型其中最高位是符号位,用来表示正数或负数。其中0用来表示正数,1用来表示负数。
那么,剩下的位就是数值位,用来表示数值大小的。

那么byte的可用范围就是7位了:
从 000 0000 ~ 111 1111 转换成十进制也就是从 0 ~ 127

如果加上符号位呢?
1111 1111 ~ 0111 1111 转换成十进制是从 -127 ~ 127
可是如果我们的 111 1111 还能再进一位呢?
那不就是变成 1000 0000了吗,那这个数到底是用来表示-128还是128呢?
因为符号位的存在,如果让它来表示128的话,就乱套了,所以我们就规定只用它来表示正的128。

所以一个字节能表示的最大范围是从 -2^7 ~ 2^7-1 ps:2^7是128

无符号类型的取值范围(char)

Java中的char类型是用两个字节来表示,使用的是Unicode编码,所以可以正常表示中文字符。
两个字节一共十六位,又因为没有符号位,都是数值位的原因,所以表值范围是从:
0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 (65535)

所以char类型的表值范围是从 0 ~ 2^16-1

转载于:https://www.cnblogs.com/imzw/p/5022516.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值