这是检查某个变量中是否设置了位并将它们存储在另一个变量中的正确方法吗?只需忽略变量名称,image[] 和 mask 变量为 1 个字节,first_hline_first_row 和 secondary_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);
}
最佳答案
有两件事:
-
image[i] & mask1
只检查是否image[i]
和mask1
至少有一点共同点。这是你的意图吗? -
first_hline_first_row &=~ (0<<i);
什么都不做(~(0<<i)
都是 1)。
从评论中我猜测这就是您要写的内容:
for(i=0; i<16; i++){
if(image[i] & mask1)
{
first_hline_first_row |= (1<<i);
}
else
{
first_hline_first_row &=~ (1<<i);
}
if(image[i] & mask2)
{
second_hline_first_row |= (1<<i);
}
else
{
second_hline_first_row &=~ (1<<i);
}
}
关于c - 按位运算位检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30440175/