学习笔记——数据转换

byte b=11;
short s=b;
int i=s;
long l=i;

小数据类型----->大数据类型 自动类型转换

int i=10;
byte b=i;

大数据类型----->小数据类型 强制类型转换
强制类型转换格式:
小数据类型 变量名=(小数据类型)变量名

byte b=(byte)i;

例:int i=128; byte b=(byte)i; System.out.println(b)
输出结果:-128
以上例子转换过程:
128的二进制:10000000
int i 128的存储:000000…10000000
-128的存储 10000000
所以为什么结果是-128,而不是127?
原因和计算机存储负数的原理有关
在计算机中,如果一个二进制数据最高位是1,那么该数据肯定是一个负数。如果最高位是0,那么该数据一定是一个正数。
最高位<–100001–>最低位
例:-7的二进制是11111001(补码)
负数在计算机中存储的是补码
存储过程:
1.先取该负数的绝对值,求出该绝对值的二进制形式(原码)
2.原码取反得到反码
3.反码+1得到补码
|-7|=7,7的二进制为00000111(原码)
取反得11111000(反码)
+1 00000001
11111001(补码)
所以-7的二进制是11111001

转换数据类型要注意的细节
1.凡是byte,short,char数据类型的数据在运算时都会自动转换成int类型的数据再转换。

byte b1=1;
byte b2=2;
byte b3=b1+b2;
System.out.println(b3);

以上程序会报错,因为b1和b2已被转换成int的数据类型,所以b1+b2也为int数据类型,但是b3是byte数据类型,大数据类型转换成小数据类型,可能缺少精度。
修改以上程序,使其正确输出b3:

byte b3=(byte)b1+b2;

2.两个不同数据类型的数据在运算时,结果取决于大的数据类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值