Pete,

Maybe it's wired up with

bits 0-7 of the shift register being dp, a, b, c, d, e, f, g

Then 00010001 would be dp off and d off which is a letter 'A' on the

seven segment display.

adilmalik, is that how it is wired up?

To flip invert the bits you will take what you have and exclusive or with with 0xff.

So in your case

it would be:

shiftOut(dataPin, clockPin, MSBFIRST, 0x11 ^ 0xff); //Send the data

But you may be doing a table lookup. In that case

you can then perform the operation on your variable.

You could even have a flag that determines whether or not to do the inversion.

So you could then

val = val ^ invert;

If invert is 0 then there will be no inversion, if it is 0xff all the bits will be inverted.

Same could be done in line:

shiftOut(dataPin, clockPin, MSBFIRST, 0x11 ^ invert); //Send the data

if invert is 0 no invert, if 0xff, it inverts the bits.

--- bill