首页 > 编程语言 > 详细

java_2018_Day7_面试题1

时间:2018-06-09 16:14:12      阅读:172      评论:0      收藏:0      [点我收藏+]

class mianshiti {
public static void main(String[] args){
//定义三个 byte类型的变量
//byte b1=3,b2=4,b;
//b1 byte类型 b2 byte类型
//两个 byte类型计算首先转换为int类型
//b=b1+b2; //可能损失精度 类型提升,编译失败
//b=3+4; //常量,先把结果计算过来,然后是否在byte范围内,如果在就不报错
//常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错.
//byte b = 130;//损失精度,byte 的范围是 -128 到 127 超出范围报错
byte b = (byte)140;
/*
分析过程
计算机的数据运算都是补码进行,而要得到补码,首先要计算出数据的二进制

int=130 //4个字节 128+2

130
1个字节8位

130是个整数 1个整数占4个字节

128 64 32 16 8 4 2 1
1 0 0 0 0 0 1 0

获取130这个数据的二进制
00000000 00000000 00000000 10000010
↑ 这是130 的源码 反码 补码

做截取操作,截成byte类型
10000010
这个结果是补码
已知补码求源码
符号位 数值位
补码: 1 0000010
反码: 1 0000001
源码: 1 1111110= -126 11111111 = 127

140
128 64 32 16 8 4 2 1
1 0 0 0 1 1 0 0

补码 1 0001100

反码 1 0001011
源码 1 1110100
-54


*/

System.out.println(b);
}
}

 

java_2018_Day7_面试题1

原文:https://www.cnblogs.com/dlbm/p/9159721.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!