This question is for mellis more than anyone, but I figured I might as well post it publicly in case someone else might find it useful.
I've been going through the code that defines all the built-in functions to make sure I understand what's going on, and I noticed this in shiftOut:
digitalWrite(dataPin, !!(val & (1 << i)));
I'm wondering what the double exclamation is for; doesn't applying the NOT operator twice just leave the input unchanged? When I wrote my own version of a shiftOut function without them, it seemed to work fine; in the ShiftOut tutorial they don't have them.
It's not very good style, and probably not necessary, but it converts anything besides 0 to 1, just in case digitalWrite() only accepted 1 for HIGH. That is, !!5 is 1, and !!0 is 0.
I see, and I see how that could be a useful trick. However, doesn't the & operator already guarantee that the result will be only 0 or 1? (I guess you did say it was probably not necessary, I'm just trying to figure out if there's any possibility it would be necessary.)