为什么Java能够将0xff000000存储为int? [英] Why is Java able to store 0xff000000 as an int?

查看:112
本文介绍了为什么Java能够将0xff000000存储为int?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Java中的整数最大值是2147483647,因为Java整数是有符号的,对吧?

0xff000000的数值为4278190080。



然而我看到这样的Java代码:

  int ALPHA_MASK = 0xff000000; 

任何人都可以指导我吗?

解决方案

高位是一个符号位。设置它表示负数:-16777216。

与大多数语言一样,Java在 2的补码形式。在这种情况下,从0x7F000000或2130706432中减去2 31 或2147483648,得到-16777216。


An integer's max value in Java is 2147483647, since Java integers are signed, right?

0xff000000 has a numeric value of 4278190080.

Yet I see Java code like this:

int ALPHA_MASK = 0xff000000;

Can anyone enlighten me please?

解决方案

The high bit is a sign bit. Setting it denotes a negative number: -16777216.

Java, like most languages, stores signed numbers in 2's complement form. In this case, subtracting 231, or 2147483648 from 0x7F000000, or 2130706432, yields -16777216.

这篇关于为什么Java能够将0xff000000存储为int?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆