按位运算位校验
Bitwise operation bit check
这是检查是否在某个变量中设置了位并将它们存储在另一个变量中的正确方法吗?忽略变量名,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);
}
两件事:
image[i] & mask1
只检查 image[i]
和 mask1
是否至少有一位相同。这是你的意图吗?
first_hline_first_row &=~ (0<<i);
什么都不做(~(0<<i)
是全部)。
根据评论,我猜这就是您要写的内容:
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);
}
}
这是检查是否在某个变量中设置了位并将它们存储在另一个变量中的正确方法吗?忽略变量名,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);
}
两件事:
image[i] & mask1
只检查image[i]
和mask1
是否至少有一位相同。这是你的意图吗?first_hline_first_row &=~ (0<<i);
什么都不做(~(0<<i)
是全部)。
根据评论,我猜这就是您要写的内容:
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);
}
}