我只是一名与Arduino合作的学生,我想知道以下代码的含义。我引用了它和一切。谢谢
void RGB(unsigned long valor) {
r = valor >> 16;
g = (valor >> 8) & 0xFF;
b = valor & 0xFF;
}
答案 0 :(得分:4)
>> - 右移操作符的符号为>> 。对于它的操作,它需要两个操作数。它将左操作数中的每个位向右移位。运算符后面的数字决定了位移位的位数(即右操作数)。因此,通过执行ch >> 3
,所有位将向右移动三个位置,依此类推。
例如:
i = 14; // Bit pattern 00001110
j = i >> 1; // here we have the bit pattern shifted by 1 thus we get 00000111 = 7 which is 14/2
& - 按位AND运算符是单个&符号:& 。它只是AND的表示,它对操作数的位而不是操作数的真值进行处理。按位二进制AND以二进制形式对数字的每个位置中的位进行逻辑AND(如上表所示)。这是输入和输出组合的字符:
+------+-------+---------------+
|bit a | bit b |a & b (a AND b)|
+------+-------+---------------+
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
+------+-------+---------------+
例如:
11001000
& 10111000
--------
= 10001000