>> & 和 0xff 是什么意思

GMs*_*soF -5 java

可能的重复:
Java 中按位运算的好教程
是 &、|、^ 按位运算符还是逻辑运算符?

代码如下:

int rgb[] = new int[] {     
(argb >> 16) & 0xff, //red     
(argb >>  8) & 0xff, //green     
(argb      ) & 0xff  //blue 
}; 
Run Code Online (Sandbox Code Playgroud)

我看到一个代码,它从一个 INT 值中获取 RGB 值,操作如上,但我以前从未见过这样的操作,我想找到更多关于它们是什么以及它们能做什么的信息,符号 >> 和 &和 0xff。

那么,你们都用 Java 解决了什么问题?

Mat*_*att 5

位运算的进一步解释。让我们假设 int 位如下所示:

00000000 10101010 01010101 11011011
unused   red      green    blue
Run Code Online (Sandbox Code Playgroud)

要获得蓝色的 int 值,您需要关闭除低 8 位以外的所有位。做到这一点的简单方法是使用按位与。0xff 也可以写成 0x000000ff,它会将高 24 位设置为 0,并且只打开低 8 位中已经设置为 1 的位。

argb & 0xff ==> 00000000 00000000 00000000 11011011
                                           blue

argb >> 8 ==> 00000000 00000000 10101010 01010101 
                                red      green
(argb >> 8) & 0xff ==> 00000000 00000000 00000000 01010101 
                                                  green

argb >> 16 ==> 00000000 00000000 00000000 10101010
                                          red
(argb >> 16) & 0xff ==> 00000000 00000000 00000000 10101010
                                                   red
Run Code Online (Sandbox Code Playgroud)

即使认为红色值上的 & 0xff 似乎是不必要的,也不能保证调用者可能没有设置一些高阶未使用的位,因此您希望安全并关闭所有这些位。