我不熟悉位运算。这是一个图像处理算法。发生了什么?
void binarize50(int pixels[]) {
for(int i = 0; i < pixels.length; i++) {
int gray = ((pixels[i] & 0xff) + ((pixels[i] & 0xff00) >> 8) + ((pixels[i] & 0xff0000) >> 16)) / 3;
pixels[i] = gray < 128 ? 0xff000000 : 0xffffffff;
}
}
我发现 (pixels[i] & 0xff) 只是在某种程度上“标准化”,让像素/字节成为介于0到255之间的正值。
(pixels[i] & 0xff00 >> 8) 是什么意思? 0xff00是什么? 如果灰度小于128,为什么像素变成0xff000000,否则变成0xffffffff?