8 digts 7 segment LED display

Sort of.
You will send 2 bytes to the part every 4 mS.
1 byte will determine what is displayed, the 2nd will determine where it is displayed.

The "what" is displayed usually comes from an array:

byte fontArray[] = {
B00111111, // 0   bit 0 = a, 1=b, 2=c, 3=d, 4=e, 5=f, 6=g, 7=decimal    High bit sources current for the selected segment
B00000110, // 1          a
B01011011, // 2    f            b
etc                                g
B01100111, // 9    e           c
};                                   d

The "where" comes from a 2nd array:

byte digitArray[] = {
B11111110, B11111101, B11111011, B11110111, B11101111, B11011111, B10111111, B01111111,}; // 0 sinks current for the digit selected

So you send out 2 bytes:
http://arduino.cc/en/Reference/ShiftOut

digitalWrite(latchPin, LOW);
shiftout(dataPin, clockPin, MSBFIRST,fontArray[x]); // these 2 lines may need to be swapped
shiftout(dataPin, clockPin, MSBFIRTS, digitArray[y]); // around, depends on how board is wired
digitalWrite(latchPin, HIGH);

This code would be in a loop, where one bye of fontArray data was sent out with one byte of digitArray.
Say you wanted to display the numbers 0 to 7 on the display. Then the loop might be:

for (x = 0; x<8; x=x+1){ // count from 0 to 7
digitalWrite(latchPin, LOW); // bring the shift register latch pin low
shiftout(dataPin, clockPin, MSBFIRST,fontArray[x]);  // shift out the segment info
shiftout(dataPin, clockPin, MSBFIRTS, digitArray[x]);  // shift out the digit select info
digitalWrite(latchPin, HIGH);   // bring the shift register latch pin high, moves the data to the outputs
delay (4);  // delay to let the data be seen at each digit (there are better ways to create this pause)
}