Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
>;的含义是什么&燃气轮机;及;java代码颜色示例中的运算符_Java - Fatal编程技术网

>;的含义是什么&燃气轮机;及;java代码颜色示例中的运算符

>;的含义是什么&燃气轮机;及;java代码颜色示例中的运算符,java,Java,我正在做一个小项目。在谷歌搜索期间,我看到了一些java代码 int red = (pixel >> 16) & 0x000000FF; 但我不明白这是什么意思?谁能解释一下那个逻辑运算的摘要吗?我读到它是这样移位的,但移位的是什么?这是一个按位“AND”运算符。当它应用于数字FF(十六进制)时,它清除整数中除最后8位以外的所有位 回想一下,按位“AND”遍历一个数字的二进制表示,并仅在两个操作数都有1的位置将1放入结果中。因为包含FF的32位掩码在二进制中看起来像这样

我正在做一个小项目。在谷歌搜索期间,我看到了一些java代码

 int red = (pixel >> 16) & 0x000000FF;
但我不明白这是什么意思?谁能解释一下那个逻辑运算的摘要吗?我读到它是这样移位的,但移位的是什么?

这是一个按位“AND”运算符。当它应用于数字
FF
(十六进制)时,它清除整数中除最后8位以外的所有位

回想一下,按位“AND”遍历一个数字的二进制表示,并仅在两个操作数都有1的位置将1放入结果中。因为包含
FF
的32位掩码在二进制中看起来像这样

00000000000000000000000011111111
结果的上三个字节将是零。最后一个字节(其中
FF
包含所有的1)将等于第一个操作数的最后一个字节。

这是一个按位“与”运算符。当它应用于数字
FF
(十六进制)时,它清除整数中除最后8位以外的所有位

回想一下,按位“AND”遍历一个数字的二进制表示,并仅在两个操作数都有1的位置将1放入结果中。因为包含
FF
的32位掩码在二进制中看起来像这样

00000000000000000000000011111111

结果的上三个字节将是零。最后一个字节(其中
FF
包含所有1)将等于第一个操作数的最后一个字节。

颜色的红色分量存储为0-255之间的数字,但“压缩”为整数。这是我的ASCII艺术,二进制,每个整数32位,显示Alpha、红色、绿色和蓝色各8位。垂直读取位号!我从1开始编号,不是0。(此外,你也可以说这些数字走错了方向——它们只是为了帮助你数数!)

像素>>16
将结果右移16位。实际上,这会删除G和B元素

AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB  move everything 16 to the right, this becomes
----------------AAAAAAAARRRRRRRR 
其中-取决于符号。你可以查一下,但在这种情况下,这并不重要

所以,你有你的红色号码,几乎。还有阿尔法成分,所有的AA。。。。如果使用0xFF屏蔽(“and”),0xFF是最低的8位

----------------AAAAAAAARRRRRRRR    (result of the bit shift)
00000000000000000000000011111111    (0xFF)
you get
000000000000000000000000RRRRRRRR

这是所需的结果,一个介于0和255之间的数字。

颜色的红色分量存储为介于0和255之间的数字,但“压缩”为整数。这是我的ASCII艺术,二进制,每个整数32位,显示Alpha、红色、绿色和蓝色各8位。垂直读取位号!我从1开始编号,不是0。(此外,你也可以说这些数字走错了方向——它们只是为了帮助你数数!)

像素>>16
将结果右移16位。实际上,这会删除G和B元素

AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB  move everything 16 to the right, this becomes
----------------AAAAAAAARRRRRRRR 
其中-取决于符号。你可以查一下,但在这种情况下,这并不重要

所以,你有你的红色号码,几乎。还有阿尔法成分,所有的AA。。。。如果使用0xFF屏蔽(“and”),0xFF是最低的8位

----------------AAAAAAAARRRRRRRR    (result of the bit shift)
00000000000000000000000011111111    (0xFF)
you get
000000000000000000000000RRRRRRRR

这是所需的结果,一个介于0和255之间的数字。

&-按位and运算符

>>-右移位运算符-将位模式向右移位

例如

4在二进制100中,如果你做>>1,那就是010,也就是2

8在二进制1000中,如果你做>>1,那将是0100,也就是4

另请参见


&-按位AND运算符

>>-右移位运算符-将位模式向右移位

例如

4在二进制100中,如果你做>>1,那就是010,也就是2

8在二进制1000中,如果你做>>1,那将是0100,也就是4

另请参见


顺便说一句,我忘了写Hello之类的东西。大家好!:)你可以在这里找到java中的每一个操作符:它是按位的,顺便说一句。@user别担心,跳过这样的玩笑是正常的。顺便说一下,我忘了写Hello之类的东西。大家好!:)你可以在这里找到java中的每个操作符:它是按位的,顺便说一句。@user别担心,在这里跳过这样的玩笑是正常的。