How receivers learn the values of *a* and *b*

If the code *a* x *X* + *b* x *Y* is going to be fixed once and then used for many strings *X* and *Y,* then the receiver can learn *a* and *b* through the following procedure. In the very first transmission, it is made known to everyone that the messages to be sent will be *X* = *1* and *Y* = *0*. As a result, the message received will be *a* x *1* + *b* x *0* = *a*. In the second transmission, the messages to be sent will be *X* = *0* and *Y* = *1,* giving *a* x *0* + *b* x *1* = *b*. The cost of this procedure can easily be amortized over subsequent uses.

How the receivers use the output from node E to recover the value of *X* and *Y*

Carl in the example receives *21,* the value of *X,* from node A. From link 6, Carl knows that *3* x *X* + *20* x *Y* = *23,* as defined by the code. So Carl's computer essentially plugs in *21* for *X* and asks, for what value of *Y* is the following equation satisfied?

*3* x *21* + *20* x *Y* = *23*.

As before, the way we define addition and multiplication always returns values in the range *0* through *31,* and the computer finds that *3* x *21* = *31*. Well, it finds that *3* x *21* = *63* in standard multiplication. But, using our definition, the computer subtracts *32* to get a value within the desired range (*0* through *31*), ending up with *31*. Then it subtracts this value from both sides of the equation, finding

*20* x *Y* = *23* – *31*

In traditional arithmetic, the *23* – *31* would be *–8,* but *–8* is outside of our allowed range. To get a value in range, the computer adds *32*. The end result is

*23* *31* = *24*

Which means that

*20* x *Y* = *24*.

Only one value in the set *0* through *31* satisfies that equation, namely

*Y* = *30*.

How so? Because in traditional arithmetic *20* x *30* = *600,* and subtracting *32* 18 times leaves a remainder of *24*.

Similarly, Dana's computer learns that
*3* x *X* + *20* x *Y* = *23* and that *Y* = *30*

Together, that information implies
*3* x *X* = *23* – *20* x *30* = *23* – *24* = *31*

and the only value of *X* satisfying *3* x *X* = *31* is

*X*=*21*.