Build a tree for $(-\infty,+\infty)$ similar to dyadic interval trees for $\left[0,+\infty\right)$
Maybe the surreal numbers will work as dyadic intervals.
Surreal numbers have a reduced form containing a left and right surreal which is like a range.
I think these ranges match the description of &quot;dyadic intervals&quot; in the link you provided.
Nan (the empty set) is considered to be positive or negative infinity depending on whether it is on the left or right side of the reduce surreal form.
The bit form of these dyadic intervals will be the right/left path down the surreal tree diagram (https://en.wikipedia.org/wiki/Surreal_number)
They start like this:
Surreal No.  Tree path  Binary Form   Reduced Form    Interval
   0            nan
   1            &quot;&quot;            1           {0|0}      {-inf,+inf}
   2           &quot;L&quot;           10           {0|1}      {-inf,0}
   3           &quot;R&quot;           11           {1|0}      {0,+inf}
   4           &quot;LL&quot;         100           {0|2}      {-inf,-1}
   5           &quot;LR&quot;         101           {2|1}      {-1,0}
   6           &quot;RL&quot;         110           {1|3}      {0,1}
   7           &quot;RR&quot;         111           {3|0}      {1,+inf}

You would also have to imagine that half way between + and - infinity is zero. Then half way between zero and +inf is 1. Then half way between 1 and +inf is 2. etc for all integers. Maybe that makes it unsuitable.
I am unsure whether surreal numbers are related to your question. I had already noticed that the surreal numbers have a quality of half ranges when I read your post.
Edit:

a &quot;1&quot; bit is prefixed to the L/R path of the given surreal. Where L=0 and R=1. Ex:-1/2 is LR on the surreal tree diagram. LR converts to 01 and then we prefix a &quot;1&quot; to get &quot;101&quot;. 101 is the binary form of the LR path.
Surreal numbers are listed as their birth number. Not their value number. Their values of their left/right reduced sides are used to determine the ranges they represent.
I can provide python code which produces these list if you want to see how these numbers and ranges are created.
the example provided above was made by hand and certainly contains mistakes.