- 数据类型(11种) 分为两类:
一.基本数据类型 :整型 byte short long int
浮点类型 float double
布尔类型 boolean
字符型 char
二.引用类型 :类 接口 数组
但是每一个数据类型,都对应着不同的内存存储形式
eg: byte a = o byte 为 8bit 位 即 00000000
int a = o int 为 32bit 位 即 00000000000000000000000000000000
float a = 11.23 float 为 32bit 位 即 00000000000000000000000000000000
bit位分为数值位和字符位
-
byte --> 1 字节 = 8 bit(C语言) --> 1 bit(符号位) + 7 bit(数值位)
short --> 2 字节 = 16 bit --> 1 bit(符号位) + 15 bit(数值位)
int --> 4 字节 = 32 bit --> 1 bit(符号位) + 31 bit(数值位)
long --> 8 字节 = 64 bit --> 1 bit(符号位) + 63 bit(数值位)
注:在高级语言中,char类型所占位数根据编码决定(默认16bit)
float --> 4 字节 = 32bit --> 1 bit(符号位) + 8 bit(阶码位) + 23 bit(数值位)
double --> 8 字节 = 64bit --> 1 bit(符号位) + 11 bit(阶码位) + 52 bit(数值位)
-
精度丢失
用浮点数存储数据的时候会存在精度丢失
原因:使用十进制计算,但结果用二进制存储。
首先我们来看一下:十进制的0.2用二进制如何存储
如上表所示,0.2无法用二进制数精确表示。
对这个现象进行解释:十进制把一个定长的距离拆分成10份,而二进制仅仅把距离拆分成两份,因此,存在十进制小数无法用二进制表示。
计算机对数据存储方式的分析
-
码制:码制分为原码、反码、补码、移码四种编码方式。计算机当中存储数据使用补码。原码与反码都会出现问题。在学习码制之前,我们首先要对机器数与真值有一个基本的了解。
-
机器数 :
-
机器数是将符号数字化的数,是数字在计算机中的二进制表示形式。对于符号位,正数为0,负数为1。机器数的大小会受到机器字长的限制,字长即为机器内部一次所能表示的二进制位数。
-
真值
真值即为真实数值。由于存在符号位,机器数所表示的形式值并非真实值。例如:1000 0010的最高位1代表负,该机器数的真实数值为-2,并非形式值130。因此,将机器数的真实数值称为真值。原码
原码即(符号位)+(真值的绝对值)。原码不能直接参与运算。举例:1 + (-1) = 0 --> 0000 0001 + 1000 0001 = 1000 0010 (十进制中代表-2)
反码
正数的反码是它本身;负数的反码是在原码的基础上,符号位不变,其余位按位取反。反码不能直接参与运算,因为运算结果会出现+-0的问题。举例:1 + (-1) = 0 --> 0000 0001 + 1111 1110 = 1111 1111 (-0)
补码
正数的补码是它本身;负数的补码等于反码+1。计算机存储的是数据的补码。举例:1 + (-1) = 0 --> 0000 0001 + 1111 1111 = 0000 0000
移码
不论正负,都将补码的符号位取反。通常用于表示浮点数的阶码。
PS:还有一部分知识点因学习安排,后期补