• 动手动脑


    一.【类型转换】

    —>无精度损失

    --à有精度损失

    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)

     

  • 相关阅读:
    LINUX-----管道流及重定向
    转:vim----复制粘贴
    linux ----虚拟机无法与本地机通信
    C语言---注释
    C语言---翻译过程
    DROP--删除表
    ALTER---删除字段
    Oracle中用一条Sql实现任意的行转列拼接 多行拼接
    Oracle列操作(增加列,修改列,删除列)
    Java 把long 转换成 日期 再转换成String类型
  • 原文地址:https://www.cnblogs.com/zql98/p/9752686.html
Copyright © 2020-2023  润新知