return ((nunchuck_buf[5] >> 1) & 1) ? 0 : 1
The parentheses give the order of evaluation:
(nunchuck_buf[5] >> 1) evaluates first.
((nunchuck_buf[5] >> 1) & 1) is next
then the value of that expression is tested true/false (non-zero == true / zero == false)
You could write it out:
byte bit = nunchuck_buf[5] >> 1;
bit = bit & 1;
if (bit == 1)
return 0;
else
return 1;