Well, for 32 bits, its only a little bit more complex -- basically, you chain the shifts

the carry of one isn't added to that word, but the next one, and then the second word's carry is added to the first. Here is what I mean, in the form of a modified right shift:
A^2 -> F
A/2 -> A
B^2 -> G
B/2 + (2**15 * F) -> B
A + (2**15 * G) -> A
As you can see, when you extend the bit number in most operations, you just have to split them into different word groupings and chain them to together

EDIT: I just had to change the bits to inverse then add
