动手动脑

一.【类型转换】

—>无精度损失

--à有精度损失

Byte 1字节   -27次方到27次方-1

short 2字节  -215次方到215次方-1

int 4字节    -231次方到231次方-1

long 8 字节  -263次方到263次方-1

float 4字节   3.402823e+38 ~ 1.401298e-45
double 8
字节  1.797693e+308~ 4.9000000e-324

char 2字节

结论:一个字节占8位数,字节数越多则表示数的范围更大。

二.【代码运行】

无论是单精度,还是双精度在存储中都分为三个部分,符号位:0代表正,1代表负;指数位:存储二进制科学记数法的指数数据,并且采用移位存储;尾数部分:存储二进制科学记数法中小数点后数据。

Float:

Double

如8.25,用二进制科学记数法表示为:1.0001*2^3;

指数可正可负,而8位的指数范围是-127~128,所以采用移位存储,即元数据+127

由于存储方式的原因,在进行加减运算时会出现误差,即十进制转为二进制是可能会有数据丢弃,再转为十进制时,可能就不会出现原数据。

三.【代码运行】

int X=100;

              int Y=200;

              System.out.println("X+Y="+X+Y);

              System.out.println(X+Y+"=X+Y");

运行结果:

x+y=300

300=x+y

1.先输出“x+y=”这个字符串str1然后运行“+”将x代表的值和str1组合成str2“x+y=100”,然后运行“+”,将y代表的值和str2组合成新的字符串str3“x+y=300”,然后输出。

2.由于x+y 不是字符串所以先计算出结果“300”将“300”作为字符串srt1,然后运行“+”和“=x+y”组合成新的字符串str2“300=x+y”,然后输出。

四.【原码,反码,补码】

  • ·原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
  • ·反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
  • ·补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

 

原文地址:https://www.cnblogs.com/zql98/p/9752686.html