Java-了解image.getRGB(x,y)二进制输出

Java-了解image.getRGB(x,y)二进制输出,java,image,colors,rgb,Java,Image,Colors,Rgb,我使用image.getRGB(x,y);结果是:-16777216 当我将-16777216转换为二进制项时,我得到的结果是: 11111111111111111111111111111111111111111111111111111000000 我的问题是,上面每个二进制的含义是什么?(你能解释一下在没有使用颜色类别的情况下,红色、绿色、蓝色、Alpha在哪里吗) 谢谢您的帮助。一个int有32位,而不是64,因此-16777216的位实际上是 1111 1111 0000 0000 000

我使用image.getRGB(x,y);结果是:-16777216

当我将-16777216转换为二进制项时,我得到的结果是:

11111111111111111111111111111111111111111111111111111000000

我的问题是,上面每个二进制的含义是什么?(你能解释一下在没有使用颜色类别的情况下,红色、绿色、蓝色、Alpha在哪里吗)


谢谢您的帮助。

一个
int
有32位,而不是
64
,因此
-16777216
的位实际上是

1111 1111 0000 0000 0000 0000 0000 0000
前8位用于alpha。接下来的8位表示红色。接下来的8位表示绿色。最后8位表示蓝色。对于这种颜色:

alpha = 1111 1111 = 255
  red = 0000 0000 = 0
green = 0000 0000 = 0
 blue = 0000 0000 = 0

如果所有3个RGB值均
0
则表示黑色
255
是最大可能的alpha值,意味着颜色根本不透明。

一个
int
有32位,而不是
64
,因此
-16777216
的位实际上是

1111 1111 0000 0000 0000 0000 0000 0000
前8位用于alpha。接下来的8位表示红色。接下来的8位表示绿色。最后8位表示蓝色。对于这种颜色:

alpha = 1111 1111 = 255
  red = 0000 0000 = 0
green = 0000 0000 = 0
 blue = 0000 0000 = 0

如果所有3个RGB值均
0
则表示黑色
255是可能的最大alpha值,这意味着颜色根本不透明。

您意外地将其转换为64位(
long
),而不是32位(
int

正确的二进制表示是

1111 1111 0000 0000 0000 0000 0000 0000
该值包含4个通道的数据:

combined:     1111 1111 0000 0000 0000 0000 0000 0000
-----------------------------------------------------
alpha:        1111 1111
blue:                   0000 0000
green:                            0000 0000
red:                                        0000 0000

这意味着这是一种完全不透明的黑色。

您意外地将其转换为64位(
long
)而不是32位(
int

正确的二进制表示是

1111 1111 0000 0000 0000 0000 0000 0000
该值包含4个通道的数据:

combined:     1111 1111 0000 0000 0000 0000 0000 0000
-----------------------------------------------------
alpha:        1111 1111
blue:                   0000 0000
green:                            0000 0000
red:                                        0000 0000

这意味着这是一种完全不透明的黑色。

IDK为什么要从二进制值的角度来看待颜色。整型值似乎更有用,请参见问题IDK为什么要根据二进制值查看颜色。整数值似乎更有用,请参见此问题