当前位置: 首页 > 知识库问答 >
问题:

>>&和0xff是什么意思[重复]

蒋向笛
2023-03-14
int rgb[] = new int[] {     
(argb >> 16) & 0xff, //red     
(argb >>  8) & 0xff, //green     
(argb      ) & 0xff  //blue 
}; 

那么,在Java中,你们都用什么来处理它们呢?

共有1个答案

薛彭薄
2023-03-14

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

00000000 10101010 01010101 11011011
unused   red      green    blue

要获得blue的int值,需要关闭除较低的8以外的所有位。简单的方法是使用按位AND。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

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

 类似资料:
  • 问题内容: 通过阅读Backbone.js源代码,我看到了以下内容: 什么啊 在这里使用它的目的是什么? 问题答案: 什么意思 [MDN]是带一个参数且始终返回的前缀关键字。 例子 有什么意义呢? 似乎很没用,不是吗?如果它总是返回,那么仅使用自身又有什么问题呢? 在理想的世界中,我们将能够安全地使用它:它比更加简单易懂。但是,如果您以前从未注意到过,这不是一个完美的世界,尤其是在涉及Javasc

  • 我不知道问号(< code >?)在java里代表,我在做一个小程序,一个Nim-game。我们在一本书里寻求帮助,看到了这样一句话: 我不明白,表示,它可以与if语句有关但您将其放在变量中吗?并且可以是“其他”?(我刚才说的这些事情可能会很误导)

  • 非常接近这个SO帖子,并在评论中询问,但在那里留下了不清楚。 和后缀是什么意思?

  • 问题内容: 我写Java已有一段时间了,今天我遇到了以下声明: 请注意数组声明中的“点点点”,而不是通常的括号[]。显然可以。实际上,我写了一个小测试并验证了它的有效性。因此,我提取了Java语法,以查看参数声明语法的位置,但未找到任何内容。 那么对那里的专家来说,这是如何工作的呢?它是语法的一部分吗?另外,虽然我可以像这样声明函数,但不能像这样在函数体内声明数组。 无论如何,您知道在哪里记录了此

  • 但是得到了错误: