Bitwise XOR of rational numbers
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&lt;.5)^(b&lt;.5);a=a*2%1;b=b*2%1
 p=l.index((a,b));P=len(l)-p
 return((z&gt;&gt;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 this using generating functions), if you change (a&lt;.5)^(b&lt;.5) to ((a&gt;=.5)and(b&gt;=.5)) above you get the binary AND between two rational numbers. Call this nd(a, b). Then we have a + b - 2*nd(a, b) = x(a, b)!