您的位置:首页 > 其它

byte=130(为byte类型赋值超长度的内容)

2018-02-18 23:30 274 查看
byte的长度是-127~128,目前需要赋值130,会出现什么情况;
首先会出现编译错误,会报出丢失精度,如果不报错可以强制类型转换,将130强转成byte
直接上代码解释:/**
* 练习:byte b = 130
* @author wangjg
*
*/
public class Byte130 {

public static void main(String[] args) {
// 此行编译会报错,byte类型的数据范围是-127到128,130超过了它的范围会报丢失精度
// byte b = 130;
// 修改方法是强制转换
byte b = (byte) 130;
// 打印结果
System.out.println(b);

/**
* 结果是:-126
* 分析过程:
* 我运行发现结果是-126,我想知道为什么是这个结果,那么就需要知道计算机是如何计算的
* 在计算机内存中数据的运算都是通过补码的方式进行的;
* 而且要得到补码,我们需要计算出数据的二进制。
*
* A:获得130这个数值的二进制
* 1、130首先是一个整数;
* 通过8421码的方式我们可以计算出128的二进制是10000000;
* 128+2为130,所以130的二进制是
* 10000010
* 2、130为int类型,占4个字节,所以空白位需要补齐
* 00000000 00000000 00000000 100000010
* 这个码是原码,看最高位是0表示正数,已知正数的原码反码补码都一致
*
*B: 做截取操作,把int类型截成byte类型,int为4位,byte未1为,截取后的数据为
* 10000010
*
*C:已知补码求原码
* 符号位 数值位
* 补码 1 0000010
*
* 反码 1 0000001
*
* 原码 1 1111110
*
*
* 1111110为126,符号位1为负数,所以值为-126
*/
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  byte 赋值
相关文章推荐