32 bit binary counter

/* I want to make a binary counter using 5 LEDs, I'm sure that there is an easier
 *  way to do this, but I'm not sure what way that is. So I'll try this way and hope
 *  for the best...
 *  */
 
 int timer = 400;                //sets the pause betweein lighting
 int One = 3;                    // LED 1
 int Two = 4;                    // LED 2
 int Four = 5;                   // LED 3
 int Eight = 6;                  // LED 4
 int Sixteen = 7;                // LED 5

void setup() {
  // put your setup code here, to run once:
pinMode(One, OUTPUT);
pinMode(Two, OUTPUT);
pinMode(Four, OUTPUT);
pinMode(Eight, OUTPUT);
pinMode(Sixteen, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(One, HIGH);      //binary One
delay(timer);
digitalWrite(One, LOW);
digitalWrite(Two, HIGH);      //binary Two
delay(timer);
digitalWrite(One, HIGH);      //binary Three
delay(timer);
digitalWrite(Four,HIGH);      //binary 4
digitalWrite(One, LOW);
digitalWrite(Two, LOW);
delay(timer);
digitalWrite(One, HIGH);      //binary 5
delay(timer);
digitalWrite(Two, HIGH);      //binary 6
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);      //binary 7
delay(timer);
digitalWrite(Eight, HIGH);    //binary 8
digitalWrite(Four, LOW);
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);       //binary 9
delay(timer);
digitalWrite(Two, HIGH);       //binary Ten
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);      // binary eleven
delay(timer);
digitalWrite(Four, HIGH);     //binary twelve
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);      //binary thirteen
delay(timer);
digitalWrite(Two, HIGH);      //binary fourteen
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);      //binary fifteen
delay(timer);
digitalWrite(Sixteen, HIGH);  //binary sixteen
digitalWrite(Eight, LOW);
digitalWrite(Four, LOW);
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary seventeen
delay(timer);
digitalWrite(Two, HIGH);    // binary eighteen
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary nineteen
delay(timer);
digitalWrite(Four, HIGH);   //binary twenty
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary twenty-one
delay(timer);
digitalWrite(Two, HIGH);    //binary twenty-two
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary twenty-three
delay(timer);
digitalWrite(Eight, HIGH);  //binary twenty-four
digitalWrite(Four, LOW);
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary twenty-five
delay(timer);
digitalWrite(Two, HIGH);    //binary twenty-six
digitalWrite(One, LOW); 
delay(timer);
digitalWrite(One, HIGH);    //binary twenty-seven
delay(timer);
digitalWrite(Four, HIGH);   //binary twenty-eight
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary twenty-nine
delay(timer);
digitalWrite(Two, HIGH);    //binary thirty
digitalWrite(One, LOW);
delay(timer);
digitalWrite(One, HIGH);    //binary thirty-one
delay(timer);
digitalWrite(Sixteen, LOW); //start counter over
digitalWrite(Eight, LOW);
digitalWrite(Four, LOW);
digitalWrite(Two, LOW);
digitalWrite(One, LOW);
delay(timer);
}