c - "? 1 : 0"是什么意思

标签 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.谢谢你的时间

最佳答案

?: 是一个 ternary operator . (数字和掩码)? 1 : 0;

可以这样想:

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

关于c - "? 1 : 0"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29221556/

相关文章:

c - scanf 子进程后的垃圾值

c - 设置嵌入式系统的运行配置

当前工作目录

C中的括号可以改变按位运算的操作数的结果类型吗?

c - 将参数传递给 C 中的信号处理程序

c - 以所需的方式对数组进行排序

c - 在 C 中读取和写入整数最高位的最便携方法是什么?

java - 在 Java 中添加 2 个 BitSet

c - 从txt文件中读取字符,编码并写入二进制文件

c# - 当 x 和 y 都为真时, "x & y"怎么可能为假呢?