强制转换

来源:4-6 【强制转换】按目标数据类型转换

ImSher

2023-11-22

请问老师这个为什么b2输出是 4 呢?我理解它超出了byte范围,但为什么是 4 这个值呢?

int i_1 = 26;
int i_2 = 260;

byte b_1 = (byte) i_1; 
byte b_2 = (byte) i_2;

System.out.println("b_1的值: " + b_1);
System.out.println("b_2的值:" + b_2);


写回答

1回答

彭彭老师

2023-11-23

是的,超出范围了。

int 型变量占 4 个字节,一个字节占 8 个二进制位,int 类型共占 32 个二进制位。计算机中以二进制形式存储数据,int 260 对应的二进制值为 100000100。

而 byte 类型占 1 个字节,也就是 8 个二进制位,int 类型转换 byte 类型,只会保留 8 位,将舍弃高位的数字,100000100 转成 byte 类型对应的二进制就是 00000100,该值对应的十进制数值就是 4

https://img1.sycdn.imooc.com/szimg/655edd3b094ed57813330336.jpg

3
0

Java零基础入门与实战

Java零基础入门与实战 多场景|多案例|全栈项目

277 学习 · 220 问题

查看课程