The registers are still connected, but im only outputting B1000000, and the first shift register is NOT getting this? I dont get it, its just displaying random data still, I placed a 0.1uf capacitor on the ground connecting to the 5v and its still random? Its killing me

Edit: Must be a big error, I used the following code to output 1's and 0's based on what I enter in the serial from the pc:
int latchPin = 12;
int clockPin = 11;
int dataPin = 13;
#define latchPin 12
#define clockPin 11
#define dataPin 13
void setup(){
// Set the pins for controlling the 595(s)
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
Serial.begin(9600);
digitalWrite(latchPin, LOW);
for(int chipnumber=0;chipnumber<3;++chipnumber){
shiftOut(dataPin, clockPin, MSBFIRST, 0);
}
digitalWrite(latchPin, HIGH);
}
void loop(){
if (Serial.available() > 0) {
int butval = Serial.read();
delay(5); // This delay and the top if loop are to debounce the button
if(butval==48){
digitalWrite(latchPin, LOW);
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, LOW); //This should already be low, so it's sort of redundant. It's here for clarity
digitalWrite(clockPin, HIGH);
digitalWrite(latchPin, HIGH);
}else{
digitalWrite(latchPin, LOW); // First, set the latch low to allow new data to be written
digitalWrite(clockPin, LOW); // Next, set the clock pin low to tell the chip to start listening
digitalWrite(dataPin, HIGH); // Set the data bit high to write out a high bit to the register
digitalWrite(clockPin, HIGH); // Set the clock high to save the high data bit
digitalWrite(latchPin, HIGH); // Finally, set the latch high to display the new contents of the register
digitalWrite(dataPin, LOW); // Just to keep to data path clear
}
Serial.println(butval);
}
}
I start off entering 1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,,1,,,11 just a bunch of 1's, the output is random
Then i tried outputting 0's, the output followed the same pattern as what happend with 1's
Alas, when I finished entering a bunch of 0's, I entered the 1's slowly to see what got lit, these are the results
Key: Row, Col 1, Col 2
(Im shifting bits not bytes)
Shifted: 1
Returned: 00000000,00000000,00000000
(NOTE NOTHING RETURNED)
Shifted: 1
Returned: 00000001,00000000,00000000
Shifted: 0
Returned: 00000011,00000000,00000000
Shifted: 0
Returned: 00000110,00000000,00000000
Shifted: 1
Returned: 00001100,00000000,00000000
Shifted: 1
Returned: 00011001,00000000,00000000
Notice that the delay returning between shifts? this is manual shifting btw, with the code above...
So thats interesting right? then it got me :3, y not try add a random 1 before every shift out to see if that fixes the order? And it....
(Im doing this while I work on it so as I type Im updating results)
Doesnt work

, yet Im getting close, for some reason the shift out is screwy... whenever I use my own single bit shifting it works, but whenever I try to bit shift the whole byte, it doesnt?
I am going to try something else after dinner, hopefully it will work
