(K<<24)>>>24在遥感影像读取中有何意义?



一般来说,为什么我们先左移它,然后再次右移? 它是否与确保像素值为正之类的事情有关? 代码截取>

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;
}

根据pix_rgb的名称,我假设pix_rgb[i][k]具有int的重复颜色,通常在 32 位(大小为int(上以形式写入

AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB
|       |       |       |
|       |       |       blue
|       |       green
|       red
alpha/transparency 

通过pix_rgb[i][k] << 24,您将所有位向左移动,并将大多数右侧 24 位设置为 0。

所以AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB会变成

BBBBBBBB000000000000000000000000
^^^^^^^^^^^^^^^^^^^^^^^^ <<24

现在有了(pix_rgb[i][k] << 24) >>> 24,你可以把它想象成BBBBBBBB000000000000000000000000 >>> 24,你把位向右移动,但同时你保证大多数左边的位将被填充0(如果我们使用>> 24我们可以用1填充它,如果第一个B也是1(。

所以BBBBBBBB000000000000000000000000将改为

000000000000000000000000BBBBBBBB
^^^^^^^^^^^^^^^^^^^^^^^^ >>>24

换句话说,我们得到了int它包含代表蓝色的值。


总之

  • pix_rgb[i][k] << 24用于删除除BBBBBBBB之外的所有位
  • >>>24用于将
  • BBBBBBBB设置回较低的索引int,因此我们可以将其视为范围 0-255 的值。

最新更新