3

Python 3, 193 164 bytes
def x(a,b,z=0):
l=[]
while(a,b)not in l:l+=[(a,b)];z=2*z|(a<.5)^(b<.5);a=a*2%1;b=b*2%1
p=l.index((a,b));P=len(l)-p
return((z>>P)+z%2**P*a**0/~-2**(P or 1))/2**p
Takes input as Python 3's fractions.Fraction type, and outputs it as well.
Fun fact (you can easily show...