什么是“?1:0”的意思

时间:2015-03-23 22:21:46

标签: c bitwise-operators

我不明白第三条线正在努力完成什么。我刚刚学会了逐位运算符。如果有人能通过最后两行走我的话会很棒。我理解换班操作员,但是换班操作员我并不完全确定它意味着什么。

    void create(uint8_t bInt[], int64_t num){
      for (int pos = 0; pos < 32; pos++){ 
        bInt[pos] = (num & mask) ? 1 : 0;
        mask = mask << 1;
         }
       }

对于此赋值,我们使用uint8_t值的32元素数组来表示32位整数。例如,二进制的整数84193是0 .... 0001 0100 1000 1110 0001.在bInt []中,它将被存储为 1000 0111 0001 0010 1000 0000 .... 0。谢谢你的时间

2 个答案:

答案 0 :(得分:6)

?:ternary operator(num & mask) ? 1 : 0;

这样想:

if( (num & mask) ) {
    bInt[pos] = 1
} else {
    bInt[pos] = 0
}

答案 1 :(得分:1)

它是三元运算符,也用于其他语言,如java,c ++。它是短格式if-then-else的替代品。它的工作原理如下 -

expression ? if_true_then_process_it : or_process_it