javase学习-精度损失

时间:2021-04-15 12:41:57   收藏:0   阅读:0

javase学习-精度损失

1.数据类型转换

long x = 10L;

  

long x = 10L; // long类型,8个字节
int y = x // int类型,4个字节

2.强转原理

int x = 10;
byte y = (byte)x;

  

byte a = 50; // 编译通过
byte b = 127; // 编译通过
byte c = 128; // 编译报错

3.原码、反码、补码

表示法描述
原码 二进制定点表示法,最高位为符号位,“0”表示正数,“1”表示负数,其余位表示数值大小
反码 正数的反码与原码相同;负数的反码为原码符号位不变,其余位数字取反
补码 正数的补码与原码相同;负数的补码为其反码的末位加1
byte c = (byte)130;
  1. 求以上程序的结果

    1. 原始数据: 00000000 00000000 00000000 10000010

    2. 强转后(补码): 10000010

      1. 补码转反码再转原码: 10000001(补码减1)

                                           11111110(反码除符号位全部取反)

      2. 补码的补码:                11111101(除符号位全部取反)

                                           11111110(加1) = -126(字面值)

      3. 以上两个方法得到的结果一致,故原码=补码的补码



评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!