理解java运算符<<

时间:2014-04-29 19:39:17

标签: java operators bitwise-operators

我正在研究以下oracle java class并遇到了这行代码:

public synchronized int getRGB() {
    return ((red << 16) | (green << 8) | blue);
}

我迷失了什么“&lt;&lt;”意思是,我也不知道返回语句是什么意思返回

4 个答案:

答案 0 :(得分:2)

这是一个移位操作。阅读更多here。它会将这3个数字打包成一个整数。

答案 1 :(得分:2)

24位颜色通常表示为RRRRRRRRGGGGGGGGBBBBBBBB,每种颜色有8位值。您的代码采用红色值,将其移位16位,将绿色值移位8位,并保持蓝色值不变,然后执行逻辑OR,在这种情况下与添加值相同。想一想:

每种颜色的字节值:

Red = 00011010
Green = 10101010
Blue = 11111111

移位的值变为:

Red << 16 = 
00011010 00000000 00000000
Green << 8 = 
00000000 10101010 00000000
Blue = 
00000000 00000000 11111111

逻辑OR将它们组合成:

00011010 10101010 11111111

这是您的24位RGB值,将返回。

答案 2 :(得分:2)

public synchronized int getRGB() {
   return ((red << 16) | (green << 8) | blue);
}
  

我迷失了什么“&lt;&lt;”意思是,我也不知道返回声明会返回什么?

首先,'&lt;&lt;&lt;&lt;被称为位移运算符。位于here的关于他们的文章很精彩。

关于你的第二个问题,看看方法的签名......它将返回int。但是,在这种情况下,它将返回并int包含blue的值和redgreen位移位值

希望这有帮助!

答案 3 :(得分:2)

x << y表示&#34;将x的二进制表示转移到左y个地方&#34;

例如

System.out.println(4 << 2);

将打印16

4是二进制的100。如果您将100转移到左侧2个位置,则会得到10000,其中小数为16