整数类型的数据在计算机底部的存储是以补码的方式来存储数据的,第一位为符号位,其余位表示存储数据的范围,位数越多,其表示的数据范围就越大。
long属于整数类型,在内存中占用八个字节(1字节=8bit),也就是64位,符号位占用一位,数据的范围就是 -2^63~2^63-1
float属于浮点数类型,在内存中占用四个四节,也就是32位。但它在内存中的存储格式和整数类型的数据在内存存储格式是不同的,它的格式是如下图所示:
符号位:用来存储正负号的,0表示整数,1代表负数。占一位。
指数位:确定小数的精度。占八位。
小数位:确定小数的精度。占二十三位。
float表示的数据范围则为 2^127~ -2^127。
浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照IEEE公式计算的得出的,long类型占8个字节,就是为了严密精确的存储每一位数值,而float占用4个字节,虽然表示的数据范围更大了,但是存在精度损失。