Jelly, 1313 9 bytes
;0+H^/&$BU_;0+HBU_/U -4 bytes (^/&$ removed) thanks to @m90's observation that we don't need to clear shared 1 bits.
Look ma, no Unicode!
Literal translation of Prodinger's algorithm. x3 goes before xh, and U is used twice to align the binary representations of the two.