读者注意:
问题:
1,为什么byte占8位,short占16位,int占32位,long占64位,float占32位,double占64位,boolean占1位,char占16位?
2,byte,short,int,long,float,double,boolean,char 默认值、最大值、最小值是如何确定的?
前置知识
存储单位
- 位 (bit-比特):表示二进制位。计算机的最小存储单位。比如:11010100 是一个8位二进制数。
- 字节 ( byte-B-拜特 ):计算机中数据处理的基本单位。1Byte=8bit。是指一小组相邻二进制数码。它是构成信息的最小单位,并作为一个整体进行操作。字节比字小,是构成字的单位。1个字节存入一个ASCIl码。两个字节存储一个汉字国标码。
- 字 ( word ):计算机进行数据处理时,一次存取,加工和传送的数据长度。一个字通常由一个字节或者多个字节组成。
- 字长:计算机的每个字所包含的位数称为字长。根据计算机的不同,字长分为固定和可变的。
固定字长:字长无论什么情况都是不变的。
可变字长:在一定范围内,字长是变化的。
计算机处理数据的速率和它一次处理数据的位数以及进行运算的快慢有关。计算机的字长决定了其CPU一次操作实际处理位数的多少。计算机的字长越大,其性能越优越。 - 字块:在信息处理中,一群字作为一个单元来处理的称为“字块”,也叫字组。在大容量存储中,都是以字块为单位而存入的。因此只有字块是寻址的。
总结一: 在计算机的运算器、控制器中,通常都是以字为单位进行传送的。字出现在不同的地址其含义也不同,在计算机中作为一个整体被存取、传送、处理的二进制数字符串叫做一个字或单元。一个字由若干个字节组成,不同的计算机系统的字长是不同的,例如:送往控制器去的字是指令,而送往运算器去的字就是一个数。字长越长,计算机一次处理的信息位就越多,精度就越高,字长是计算机性能的一个重要指标。
总结二:注意字与字长的区别,字是单位,而字长是指标,指标需要用单位去衡量。正象生活中重量与公斤的关系,公斤是单位,重量是指标,重量需要用公斤加以衡量。
数据存储结构
编码
- 机器数:一个数在计算机中的二进制表示形式。机器数是带符号的,最高位存储符号,正数为0,负数为1。
-
真值:将带符号位的机器数对应的真正数值称为机器数的真值。
- 图中的 1000,0101 如果忽略符号位,对应的值是 133,不是机器数对应的真值
原码
反码
补码
- 补码推算方式:
正整数的补码是:其二进制表示,与原码一致
负整数的补码是:将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1。(注意此条,只是一种补码的计算方式,不是补码的编码方式) -
补码的特性
1、一个负整数(或原码)与其补数(或补码)相加,和为模。
2、对一个整数的补码再求补码,等于该整数自身。
3、补码的正零与负零表示方法相同。
java基础数据类型
概述:byte,short,int,long,float,double,boolean,char
byte
- 占用存储:8位
- java数据处理单位:1字节
- 最大值:127 [27-1];最小值: -128[-27]
a. 为什么最大值是127,最小值是-128? - 默认值是:0
a. 为什么默认值是0?
short
- 占用存储:16位
- java数据处理单位:2字节
- 最大值:32767[215-1];最小值:-32768[-215]
- 默认值:0
int
- 占用存储:32位
- java数据处理单位:4字节
- 最大值:2,147,483,647[231-1];最小值:-2,147,483,648[-231]
- 默认值:0
long
- 占用存储:64位
- java数据处理单位:8字节
- 最大值:9,223,372,036,854,775,807(263 -1);最小值:-9,223,372,036,854,775,808(-2^63)
- 默认值:0L
float
- 占用存储:32位、符合IEEE 754标准的浮点数
- java数据处理单位:4字节
- 最大值:3.4028235E38[3.4028235 * 1038];最小值:1.4E-45[1.4 * 10-45]
- 默认值:0.0f
double
- 占用存储:64 位、符合IEEE 754标准的浮点数
- java数据处理单位:8字节
- 最大值:1.7976931348623157E308[1.7976931348623157 * 10308];最小值:4.9E-324[4.9 * 10-324]
- 默认值:0.0d
boolean
- 占用存储:it depends on Java virtual machine
- 只有两个取值:true 和 false
- 默认值:false
char
- 占用存储:16位, Unicode 字符
- java数据处理单位:2字节
- 最大值:\u0000[0];最小值:\uffff[65,535];
- char 数据类型可以储存任何字符
引用数据类型
对象、数组、集合。所有引用数据类型的默认值是null
参考资料
http://blog.csdn.net/YuanMxy/article/details/74170745
https://www.cnblogs.com/x_wukong/p/3952688.html
https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
https://www.cnblogs.com/x_wukong/p/3952688.html