哪位能帮我仔细解释下红色代码的意思吗?
/////////////////////////////////////////////////////////////int getIRKey() {
int data;
int i;
while(pulseIn(irPin, HIGH) < start_bit); //Wait for a start bit
for(i = 0 ; i < BIT_PER_BLOCK ; i++)
data = pulseIn(irPin, HIGH); //Start measuring bits, I only want HIGH pulses
delay(100);
for(i = 0 ; i < BIT_PER_BLOCK ; i++) //Parse them
{
if(data > bin_1) //is it a 1?
data = 1;
else
if(data > bin_0) //is it a 0?
data = 0;
else
return -1; //Flag the data as invalid; Return -1 on invalid data
}
//based on NEC protocol, command data started from bit 16
//and end with bit 24 (8 bits long)
int result = 0;
for(i = 16 ; i < 24; i++) {
DigiKeyboard.print(data); //print out the value of button in binary form
if(data == 1) result |= (1<<i-16);
}
return result; //Return key number
} 1<<i-16 这个是吧字符型转成int型吗? 左移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。
应用举例:
一,问:计算表达式14 << 2的值。
答:表达式14 << 2的值为56,因为14(即二进制的00001110)向左移两位等于56(即二进制的00111000)。
二,问: 计算表达式8 >> 2的值。
答:表达式8 >> 2的值为2,因为8(即二进制的00001000)向右移两位等于2(即二进制的00000010)。
页:
[1]