位掩码未返回正确的值
我正在尝试解决这种情况,我总是得到 8 作为返回值。我不确定读取位操作的条件。
int outputbyte[3] = {10,11,12};
int result;
result = (outputbyte[1] & 11)?8:0;
printf("\nMasked value is: %d", result);
我不明白这种情况是如何变得真实的(输出字节 [1] 和 11)?
位掩码未返回正确的值
我正在尝试解决这种情况,我总是得到 8 作为返回值。我不确定读取位操作的条件。
int outputbyte[3] = {10,11,12};
int result;
result = (outputbyte[1] & 11)?8:0;
printf("\nMasked value is: %d", result);
我不明白这种情况是如何变得真实的(输出字节 [1] 和 11)?
这里
int outputbyte[3] = {10,11,12};
result = (outputbyte[1] & 11)?8:0;
这个
result = (outputbyte[1] & 11)?8:0 /* (outputbyte[1] & 11) results in true hence 8 assigned to result */
是三元运算符,即第一个操作数 1即被(outputbyte[1] & 11)?8:0)
评估,如果结果为非零,则操作数 2即被8
分配,result
否则操作数 3即被0
分配给result
。
outputbyte[1] ==> 11 => 0000 1011
& ( bitwise AND operator)
11 => 0000 1011
-----------
0000 1011 => 11 i.e nonzero i.e condition true i.e 11 gets assigned to result
-----------
我希望您知道按位与运算符的真值表&
,即
A B A&B
------------
0 0 0
0 1 0
1 0 0
1 1 1