I have two arrays of UINT32's that look like this.

I'm using them to store bits. Here's my problem.Code:`vector<UINT32> a;`

vector<UINT32> b;

Let's imagine both a and b have 48 bits stored in them, so they both have size()==2. But only half of the second UINT32 is actually being used as bits. I need to insert b onto a, but I want to insert it on the bit level. So after the insertion is complete the result should be size()==3 and 96 bits total. The bits must also stay in the same order as they are in currently, so no swapping. The problem is that I have no idea how to do this, but it seems like there must be a way. If anybody needs clarification on anything just ask.