Having trouble with 74HC595 and Uno
Serial.read() is going to give you ASCII codes.  So when you send 1 from the serial monitor the Arduino receives 49.  Note that the ASCII code for a digit is the same as the digit plus 48, so that sets bits 4 and 5 high.  

You can use Serial.read() - '0' to get the actual number from the ascii code.