Java 基本类型占用字节问题 jdk1.8, 以及小数点边界

//基本类型的赋值操作, 超过范围会有检查异常
byte a = 127; // -128~127 有符号 占用 1个字节
byte b = -128;
char c = Character.MAX_VALUE; //最大值等于 \uFFFF=65535
char d = (1 << 2 * Byte.SIZE) - 1; //0~65535, 占用两个字节 无符号
short e = (1 << (2 * Byte.SIZE - 1)) - 1; // -32768~32767 两个字节 有符号 上边界
short f = -(1 << 2 * Byte.SIZE - 1);// 下边界
int g = 0x7FFFFFFF; //-2147483648~2147483647 四个字节 有符号 上边界
int h = Integer.MAX_VALUE; //上边界
int i = 0x80000000; //下边界
long j = 0x7FFFFFFFFFFFFFFFL;//-9223372036854775808~9223372036854775807 八个字节 有符号 上边界
long k = Long.MAX_VALUE;//上边界
long l = 0x8000000000000000L; //下边界
long m = Long.MIN_VALUE;//下边界
float n = 0x1.fffffeP+127f;// 3.4028235e+38f 4个字节 上边界 {@link https://en.wikipedia.org/wiki/IEEE_754}
float o = Float.MAX_VALUE;//
float p = 0x0.000002P-126f;//下边界 1.4e-45f
float q = Float.MIN_VALUE;//
double r = 0x1.fffffffffffffP+1023;//1.7976931348623157e+308 占用8个字节 有符号 上边界
double s = Double.MAX_VALUE;
double t = 0x1.0p-1022; //下边界
double u = Double.MIN_VALUE;
boolean v = true;
boolean w = false;

小数点的边界定义采用了 EEE Standard for Floating-Point Arithmetic (IEEE 754)  标准

https://en.wikipedia.org/wiki/IEEE_754

NameCommon nameBaseSignificand bits[b] or digitsDecimal digitsExponent bitsDecimal E maxExponent bias[10]E minE maxNotes
binary16Half precision2113.3154.5124−1 = 15−14+15not basic
binary32Single precision2247.22838.2327−1 = 127−126+127 
binary64Double precision25315.9511307.95210−1 = 1023−1022+1023 
binary128Quadruple precision211334.02154931.77214−1 = 16383−16382+16383 
binary256Octuple precision223771.341978913.2218−1 = 262143−262142+262143not basic
decimal32 10777.5896101−95+96not basic
decimal64 1016169.58384398−383+384 
decimal128 10343413.5861446176−6143+6144

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值