1、计算机中存储单元是比特位,8个比特位组成一个最小的存储单元,8个比特位成为一个字节,一个比特位可以保存两种不同的数据(0和1),那么8个比特位可以有2的8次方个数据
例如:byte aa = 1;
在内存中就是其中首个格子(最高位)也就是代表了二进制的符号位
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
例如:byte aa = -1;最高位为1即代表了符号位-1
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2、进制转换
a、任何进制转十进制:按权展开法
例如二进制1001.01 = 2^3*1+2^2*0+2^1*0+2^0*1 + 2^-1*0 + 2^-2*1
b、十进制转任何进制:短除法
c、二进制转8进制与十六进制
1)二进制转8进制 首先考虑8进制等于2的3次方,也就是每三个代表一个8进制
2)二进制转16进制 首先考虑是2的4次方 也就是没四个2进制代表一个16进制
例如 1000 1111 -> 8f
3、计算机基础原码、反码、补码
原码:最高位为符号位,其余低位表示数值的绝对值
反码:正数的反码与原码一致,负数的反码是其绝对值取反(符号位不变)
补码:整数的补码与原码相同,负数的补码是其反码末位+1(符号位不变)
数值1 | 数值-1 | 数值1-1 | |
原码 | 0000 0001 | 1000 0001 | 1000 0010 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 |
4、字节以及范围
由占用了几个字节即可得到其范围大小,一个byte占用8个字节,则它的范围计算为:去除掉最高位(最高位为符号位)即 -2^7~2^7, 注意计算机是有-0(10000000需注意-0代表的是-128来表示)符号位的区分的所以其范围表示为-2^7~2^7-1
如下图为Java中基本类型(包装类型也是一样的只不过增加了对象特性)占用的字节数通过字节数可以自行计算其范围
基本类型 | 包装类型 | 字节 | 范围计算 | 字符集与默认值 |
byte | Byte | 1 | -2^7~2^7-1 | 默认0 |
char | Character | 2 | 0~2^16-1 | char 类型的取值范围为 Unicode 字符集默认'\u0000' |
short | Short | 2 | -2^15~2^15-1 | 默认0 |
int | Integer | 4 | -2^31~2^31-1 | 默认0 |
float | Float | 4 | -2^31~2^31-1 | 默认0.0f |
boolean | Boolean | 4 | -2^31~2^31-1 | 默认false |
long | Long | 8 | -2^63~2^63-1 | 默认0 |
double | Double | 8 | -2^63~2^63-1 | 默认0.0d |