Java学习笔记12——数据类型思维题
思考问题1:
以下代码有什么问题吗?
双b=12.34
float f=d;
第二行代码是错误的。双转换为浮点需要强转换。浮动f=(浮动)d
思考问题2:
看看程序指令有没有问题。
浮动f1=(浮动)12.340;
浮子f2=12.34F
没问题。
第一条线被迫转向
第二行本身是浮点类型。
面试问题3:
字节b1=3,b2=4,b;
b=b1 b2
b=3 ^ 4;
哪个句子翻译失败了,为什么?
第二句会有问题。b=b1 b2有问题。
1.变量的加入首先会看类型问题,最后结果的赋值也会考虑类型问题。
Byte、short、char不相互转换,它们参与的操作首先转换为int类型。
而3和4都是整数int,所以赋值后的b1和b2也是int数据类型,两个int类型的变量相加的结果也应该是int类型。
但是B是字节数据类型,所以结果一定是强转换。
2.对于常数之间的加法,先做加法运算,然后看结果是否在数据接收范围内。如果是,直接赋值,不报错。
如题所示:首先计算b=3 4=7。然后,因为B是字节数据类型,字节数据类型的范围在-128到127之间,7在范围内,7直接赋给B。
当加法结果在字节范围内时:
当加法结果大于字节范围时:
问题4:
字节=130;
有什么问题吗?如果我想让作业正确,我能做什么,结果是什么?
分析过程:
如果我们想知道结果是什么,我们必须了解计算机是如何工作的。
我们知道计算机中的所有数据操作都是通过补码来完成的。
想要得到补码,必须知道反码和原码。
想要知道原始代码,必须知道对应的二进制。
1.计算130个数据对应的二进制。
默认整数是int类型,占4个字节。
00000000 00000000 00000000 10000010
这是130的原码,也是补码和补码。三个代码是统一的。
2.强制类型转换(拦截操作)
10000010
这种计算机截取的结果是计算机对操作的补充。
3.找到已知补码的原始代码
符号值位
补充:1 0000010
逆代码:1 0000001
原代码:1 1111110
将原始代码转换为十进制(通过8421代码)
64 32 16 8 4 2=126
因为符号位是1,所以结果是-126。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/126069.html