数据类型转换特例

数据类型转换特例

1、例:以下有什么区别?

image

​ f1是通过double类型进行强制类型转换过来的;

​ f2本身就是一个float类型

2、例:如图所示,代码是否有问题?为什么?

!image

​ 该代码b = b1 + b2;有问题,输出有错误。

变量相加,首先看类型问题,最终把结果的赋值也会考虑类型问题,因为byte,short,char他们参与运 算首先会转换为int类型

​ 原因:在b = b1 + b2;中,首先,b1会转为int类型,b2也会转为int类型,而b是byte类型,用byte类型来 接收int类型,是不可取的。

​ 如图:image

​ 当b=3+4;的时候,语句是正确的。

常量之间相加,首先会做加法运算,然后看这个结果是不是在接收数据类型的范围内,如果在,就直接赋 值,不会报错。

3、例:image

image

​ 分析:我们想知道输出结果是什么,就得明白计算机内部是如何计算的。我们知道计算机中的数据都是通过 补码进行的,想要得到补码,就必须知道反码、原码,想要得到原码,就必须知道对应的二进制

​ (1)计算出130这个数据的二进制,整数默认是int类型,占4个字节

​ 通过8421码得到130的原码:00000000 00000000 00000000 10000010

​ 因为130是正数,所以反码和补码都与原码相同。

​ (2)计算机内部强制类型转换,做了截取操作,结果只剩下10000010,这个结果是补码

​ (3)已知补码10000010,求反码以及原码:

image

​ (4)把原码1111110换算成十进制

​ 64+32+16+8+4+2=126

​ 由于符号位是1,所以结果为-126

posted @ 2021-11-24 19:17  阿伟宝座  阅读(133)  评论(0)    收藏  举报