We program it with the function shiftOut(), eg.shiftOut(dataPin, clockPin, MSBFIRST, 255) (255 - BIN=11111111 - all pins high). But can we program it like shiftOut(dataPin, clockPin, MSBFIRST, 11111111) to make all pins high?
What if there's no shiftOut function, how can we send binary data to the data pin?
If you know which datapin and clockpin is used you can create a direct port version which is faster (never tried so watch timing!
and you could remove the LSBFIRST test out of the loop if you know the order compile time
and do loop unrolling - footprint vs speed
(BTW The double !! is to generate 0 and 1 from int values.)
A few cycles per bit might improve the PWM shift register library though, it might increase the number of registers you can PWM... I say its worth trying