【发布时间】:2015-05-25 14:03:54
【问题描述】:
这是检查是否在某个变量中设置了位并将它们存储在另一个变量中的正确方法吗?忽略变量名,image[]和mask变量都是1字节,first_hline_first_row和second_hline_first_row是2字节。
for(i=0; i<16; i++){
if(image[i] & mask1) first_hline_first_row |= (1<<i);
else first_hline_first_row &=~ (0<<i);
if(image[i] & mask2) second_hline_first_row |= (1<<i);
else second_hline_first_row &=~ (0<<i);
}
【问题讨论】:
-
这是什么意思:
first_hline_first_row &=~ (0<<i);? -
移零无效。以及与它进行 OR-ing。与它进行与运算也会产生零。
-
是用来清位的吗?
-
它用于不做任何事情。
0<<i = 0,~0 = 0xFF...,a & 0xFF.. = a. -
好的,这是什么? stackoverflow.com/questions/47981/…
标签: c bit-manipulation bitwise-operators bit-shift