您的当前位置:首页正文

【数据类型转换】将128强制转换为byte为何得到的是-128?

2024-11-29 来源:个人技术集锦


前言

当把一个int型常量赋值给一个byte、short和char类型变量时,会造成精度损失。例如:将常量128强制转换为byte型,我们知道byte表示的数的范围是-128~127,通过输出我们知道,转换后的值为-128.接下来我通过形象的方式对这个结果进行解释。


为了完整了解结果的由来我们要先了解计算机的二进制方面的知识

一、原码、反码、补码

以byte为例:

在计算机中,数字都是以补码的形式存储的,也就是说,-127在计算机中存储形式为1000 0001
由此我们可以推出-128的补码为1000 0000

二、为何128会转换为-128

1.int型数据128的表示形式

当你强制将int型变量转换为byte时,计算机就会将1000 0000前的数字比特位截断!

2.对应为-128的byte型数据

此时,1000 0000对应的是-128的补码。


总结

知识点:
1.数据在计算机中的存储形式为补码
2.正数的原码“三码合一”,即原码、反码、补码都是一样的
3.负数的反码为原码除符号位外,按位取反;补码为反码+1

显示全文