JAVA byte int 0xff 0xffffffff

JAVA byte int 0xff 0xffffffffbyteb=0xff;这样无法通过编译。因为这时的0xff,是作为int类型的,其值为255,二进制记作0000000000000000 0000000011111111,另外,JAVA这里的二进制是用补码的。而byte的范围是-127~128,所以编译器无法通过。如果要想通过编译,应该如下:byteb=(byte)0xff;这时0xff,…

大家好,又见面了,我是你们的朋友全栈君。

byte b = 0xff;

这样无法通过编译。

因为这时的0xff,是作为int类型的,其值为255,

二进制记作0000 0000 0000 0000 0000 0000 1111 1111,另外,JAVA这里的二进制是用补码的。

而byte的范围是-127~128,所以编译器无法通过。

如果要想通过编译,应该如下:

byte b = (byte) 0xff;

这时0xff,是作为byte类型的,其值为-1,

二进制记作1111 1111,是补码形式的。

-1在-127~128之间,所以编译器可以通过。

如果写做如下写法也都是可以的

int c = 0xff;
int d = 0xffffffff;
byte b = 0xffffffff;

0xff实际上是int类型的,值为255,在int的范围内,所以第一行通过编译。

0xffffffff实际上是int类型的,值为-1,

二进制记作1111 1111 1111 1111 1111 1111 1111 1111 补码形式,

-1在int类型范围内,所以第二行通过编译。

同理,第三行的0xffffffff也是是int类型的,值为-1,在byte的 -127~128范围内,通过编译。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145412.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号