在条件中使用班次操作的说明

时间:2017-07-20 19:12:50

标签: c++ c binary shift

我有一个c代码给我填写我的论文。你能解释一下下面的部分是做什么的,因为我对它非常满意。

int i;
_int8 codeword[64800];

//loop running through codeword
if (codeword[i << 1] << 1 | codeword[i << 1 | 1])
    {
      //more code here
    }

我是一个循环计数器和 codeword []是1和0的1d矩阵

例如,如果代码字[i]为1,我主要寻求对所发生的操作的解释。

1 个答案:

答案 0 :(得分:1)

该测试将codeword中的2位与偏移2 * i2 * i + 1结合起来,如果它们不是0,则评估正文。表达式解析为:

int i;
_int8 codeword[64800];

//loop running through codeword
if ((codeword[i << 1] << 1) | codeword[(i << 1) | 1]) {
    // more code here
}

请注意,表达式可以是等效的,但更具可读性:

int i;
_int8 codeword[64800];

//loop running through codeword
if (codeword[2 * i] || codeword[2 * i + 1]) {
    // more code here
}