(java)基本数据类型范围详解

(Java)基本数据类型范围详解

个人感觉基础很重要,之前也在笔记本上做了相关的笔记,但是还是容易忘掉原理,每次还得花点时间想一下,这次就详细的解释一下,方便自己以后复习以及查看

Java的基本数据类型可以分为四个大类,整数型,浮点型,字符型,布尔型

整数型(从小到大):byte,short,int,long

浮点型(从小到大):float,double

字符型:char

布尔型:boolean

整数型

byte

数值范围为一个字节

-128~127

-27~(27)-1

原理:一个字节有八位,除去第一个为符号位,所以为27,至于正数为什么要减一,是因为27的含义是有2^7种可能,映射到数值上就是1~128,但是正数是从0开始,故减一,同理,负数不包括零,故不用减一

short

数值范围为两个字节

-215~(215)-1

原理同上,后不再叙述

int

数值范围为四个字节

-231~(231)-1

long

数值范围为八个字节

-263~(263)-1

浮点型

float

占四个字节,为什么不说数值范围为四个字节呢?因为浮点型采用的是科学计数法

float为单精度浮点型

1bit表示符号,8bit表示指数,23bit表示小数

(转载作者:Boss呱呱 链接:https://www.zhihu.com/question/46432979/answer/221485161 来源: 知乎)

需要注意的是指数可能是负数,也有可能是正数,即指数是有符号整数,而有符号整数的计算是比无符号整数麻烦的。所以为了减少不必要的麻烦,在实际存储指数的时候,需要把指数转换成无符号整数。那么怎么转换呢?

注意到float的指数部分是8位,IEEE规定这个指数的取值范围是 -126到+127(详见下文),为了消除负数带来的实际计算上的影响(比如比较大小,加减法等),可以在实际存储的时候,给指数做一个简单的映射,加上一个偏移量,比如float的指数偏移量为127,这样就不会有负数出现了

比如

指数如果是6,则实际存储的是6+127=133,即把133转换为二进制之后再存储。

指数如果是-3,则实际存储的是-3+127=124,即把124转换为二进制之后再存储。

当我们需要计算实际代表的十进制数的时候,再把指数减去偏移量即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzzEhd3l-1593755185152)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20200703130836610.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o5P7ONPe-1593755185155)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20200703130954113.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e0CoSP8M-1593755185158)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20200703131020121.png)]

float的精度为2^24=16777216,也就是说float最大的精度为8位,但是完全可以表示的精度是7位,至于为什么是24次方,不是float只有23个小数位嘛?

这就涉及到隐含以一开头了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LyDhvGrs-1593755185166)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20200703133635459.png)]

(转载于 https://blog.csdn.net/liu_jiachen/article/details/100138857)

double

double为双精度浮点数,占8个字节

1bit符号位,11bit指数位,52bit指数位

原理同float

double的精度最大能表示17位,但是能完全表示16位

说到这里我们就发现,float的四字节能表示的数值范围超过了long八字节表示的范围,由此我们可以得出结论,数值范围和字节数不一定相关

字符型

char

char占两个字节

嗯,这个没有什么说的。。。

布尔型

boolean

boolean占一个字节。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值