Why does Hex not read out in an array for LED "clock"?

Hey guys, thanks so much for your help. I've got one more question, but mostly I wanted to share with you my end result for you to maybe point out any issues but also to share with anyone now or in the future that may be looking for similar code. One last question. Any materials that I could read to understand more of the masking method? I'm going to be stepping into ARM here soon and I know libraries are vastly different and want to understand the raw code of masking.
Edit: What's the easiest way to determine size of an array. I'd rather not have a pinCount and arrayCount but Sizeof doesn't seem to work on arrays. I know I could probably put together some for loops to do the counting for me but I was hoping there'd be some function that could do it for me.

int pins[] = {9,10,11,12};	// an array of pin numbers
int pinCount = 4;
int data[] = {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF};// array of data
int arrayCount = 16;
int timer = 1000; //1 sec delay

void setup() {
  for (int thisPin = 0; thisPin < pinCount; thisPin++)  { //Initialize pins[] as outputs
    pinMode(pins[thisPin], OUTPUT);      
  }
}

void loop()
{
  for (int a = 0; a < arrayCount; a++)  //Cycle through the data[]
   {
     for (int b = 0; b < pinCount; b++)  //Cycle through bits in each data[] entry
     {
       digitalWrite(pins[b], bitRead(data[a],b)); //Write to the corresponding pins[] the corresponding data in data[]
     }
     delay(timer);
   }
}