首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(k<<24)>>>24在遥感图像读取中的意义是什么?

(k<<24)>>>24在遥感图像读取中的意义是什么?
EN

Stack Overflow用户
提问于 2019-12-19 15:33:01
回答 1查看 61关注 0票数 2

一般情况下,为什么我们先左移,然后又右移呢?它是否与确保像素值为正相关?代码片段->

代码语言:javascript
复制
for(k=0; k<Width; k++)
{
    if(shiftFlag != 8)
    {
        p1 = pix_rgb[i][2*k] << 24;
        p2 = (pix_rgb[i][2*k+1] <<24 ) >>> 8;
        tempCount = p1 | p2;
        tempCount = tempCount >>> 16;
    }
    else
        tempCount = (pix_rgb[i][k] << 24) >>> 24;

    if(tempCount>maxBand[i])
        maxBand[i]=tempCount;

    if(tempCount<minBand[i])
       minBand[i]=tempCount;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-19 15:49:19

根据pix_rgb的名称,我假设pix_rgb[i][k]持有一种通常在32位(即int大小)上的int表示颜色。

代码语言:javascript
复制
AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB
|       |       |       |
|       |       |       blue
|       |       green
|       red
alpha/transparency 

通过pix_rgb[i][k] << 24,您正在将所有位移到左边,并将最右的24位设置为0。

所以AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB会变成

代码语言:javascript
复制
BBBBBBBB000000000000000000000000
        ^^^^^^^^^^^^^^^^^^^^^^^^ <<24

现在,使用(pix_rgb[i][k] << 24) >>> 24,您可以将其看作是BBBBBBBB000000000000000000000000 >>> 24,其中您正在向右移动位,但同时保证大多数左位将填充0(如果我们使用>> 24,我们可以用1填充它,如果第一个B也是1)。

所以BBBBBBBB000000000000000000000000会变成

代码语言:javascript
复制
000000000000000000000000BBBBBBBB
^^^^^^^^^^^^^^^^^^^^^^^^ >>>24

换句话说,我们得到了int,它保存的值只表示,只表示蓝色。

总之

  • pix_rgb[i][k] << 24用于删除所有位,但BBBBBBBB
  • >>>24用于将BBBBBBBB设置为较低的int索引,因此我们可以将其视为0-255范围内的值。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59412759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档