With 5V logic, HIGH is nominally 5V and LOW is nominally 0V (ground).
You won't get exactly 5V and ground*, but you don't need 5V and ground... If you look at the datasheet you can find the minimum input/output voltages or logic HIGH, and the maximum output voltages for logic LOW. In general, the output specs are tighter than the input specs, so that an output connected to an input always reads correctly. (But, this is not always true if you mix-and-match logic families.) In this case, you would need to check the input specs for your shift register and the output specs for the Arduino. You didn't tell us which shift register you are using, but there is a 99% chance it will work.
On the Arduino, a logic HIGH output is at least 4.2V and an a logic LOW output is 0.9V or less.
Ahha, ok I was reading that if I pull a digital pin to LOW then it would be grounded but whenever I pulled this pin LOW, my registers would not clear which was showing that it wasn't truly grounded.
I am using 2 types of registers, 1 to push the current and the other to sink it. The datasheets are here:
Like I said, when I pull it low the registers do not clear anything, they remain in the same state as they previously were. If I physically connect it to ground then it clears it out perfectly. I am using a Micro for my project.
I figure what I can actually do it put a NPN and PNP transistor between the ground and +5 and use 2 digital pins from the Arduino to first set them both to LOW (transistors off) before setting the desired one to on. I will try this when I get home from work today.