#define CMO_ZZ 20

We describe the bignum (multi-precision integer) representation in OpenXM.
In OpenXM `CMO_ZZ` is used to represent bignum. Its design is similar
to that in GNU MP. (cf. `plugin/cmo-gmp.c` in the `kan/sm1`
distribution). CMO_ZZ is defined as follows.

int32 CMO_ZZ |
int32 f |
int32 b_{0} |
int32 b_{n} |

*f* is a 32bit integer.
are unsigned 32bit integers.
|*f*| is equal to *n*+1.
The sign of *f* represents that of the above CMO. As stated in Section
2, a negative 32bit integer is represented by
two's complement.

In OpenXM the above CMO represents the following integer. (
*R* = 2^{32}.)

If we express `int32` by the network byte order,
a CMO_ZZ 14 is expressed by

The corresponding byte sequence is

Note that CMO_ZZ 0 is expressed by `(CMO_ZZ, 00,00,00,00)`.