1.自动类型提升:

byte first=100;
second=first;
由小到大
short(16位)与char(16位)无法自动转换
两个short相加,会自动提升为int
float+double,会自动提升为double
两个float相加,仍然是float类型。
【近大着大】
当数字范围小的类型与数字范围大的类型相运算时,范围小的类型值会先提升为较大类型再参与运算。
Boolean不参与类型转换。

2.强制类型转换(舍高位留地位)

int first=100;
byte second=(byte)first;

原码、反码、补码
前缀表示方法:二进制:0b/0B 十进制:无前缀 八进制:0 十六进制0x/0X
负数:
原码按位取反得到反码
补码=反码+1
原码+补码=0

正数:
原、补、反码都是一致的。

计算机数字运算均是基于补码的。
eg:11原码 00001011
-11补码 10001011(最高位是符号位,其余部分为原数的绝对值)
eg:17.625->10001.101
整数部分: 小数部分

17/2=8…….1 0.625*2=1.25 ->1

8/2=4……0 0.25*2=0.5 ->0

4/2=2……0 0.52=1.0 ->1
2/2=1……0 0
2=0 ->结束
1/2=0…….1
换成科学计数法:1.0001101*2^4
指数:4+127(固定值)=131(1000-0011)
底数(值记录小数点后的数):0001101
符号:正数0(负数1)
=>float保存形式:
1为(符号 s) 8位(指数 E) 23(底数 M)
0 1000-0011 000-1101-0000-0000-0000-0000
二进制小数返回十进制小数
101:
1/2=0.5
(0.5+0)/2=0.25
(0.25+1)=0.625
Double保存形式:(1+11+52)