博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中数据类型的取值范围
阅读量:4310 次
发布时间:2019-06-06

本文共 816 字,大约阅读时间需要 2 分钟。

整数数据类型的取值范围

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

下面以java来进行举例:

byte    1个字节 (8bit)     -2^7~2^7-1  short   2个字节 (16bit)    -2^16~2^16-1int     4个字节 (32bit)    -2^31~2^31-1long    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

你可能感兴趣的文章
<h:commandLink>和<h:inputLink>的区别
查看>>
<a4j:keeyAlive>的英文介绍
查看>>
关于list对象的转化问题
查看>>
VOPO对象介绍
查看>>
suse创建的虚拟机,修改ip地址
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>