next up previous contents
: 分散表現多項式 Dpolynomial : 数, 多項式 の CMO : Zero   目次

整数 ZZ

#define     CMO_ZZ          20

この節ではOpen xxx 規約における任意の大きさの整数(bignum)の扱いについ て説明する. Open XM 規約における多重精度整数を表すデータ型 CMO_ZZ は GNU MPライブラリなどを参考にして設計されていて, 符号付き絶対値表現を用 いている. (cf. kan/sm1 の配布ディレクトリのなかの plugin/cmo-gmp.c) CMO_ZZ は次の形式をとる.

int32 CMO_ZZ int32 $f$ int32 $b_0$ $\cdots$ int32 $b_{n}$

$f$ は32bit整数である. $b_0, \ldots, b_n$ は unsigned int32 である. $\vert f\vert$$n+1$ である. この CMO の符号は $f$ の符号で定める. 前述し たように, 32bit整数の負数は 2 の補数表現で表される.

Open xxx 規約では上の CMO は以下の整数を意味する. ($R = 2^{32}$)


\begin{displaymath}
\mbox{sgn}(f)\times (b_0 R^{0}+ b_1 R^{1} + \cdots + b_{n-1}R^{n-1} + b_n R^n).
\end{displaymath}

例: int32 を network byte order で表現 しているとすると,例えば, 整数 $14$ は CMO_ZZ で表わすと,


\begin{displaymath}
\mbox{(CMO\_ZZ, 1, 0, 0, 0, e)},
\end{displaymath}

と表わす. これはバイト列では

\begin{displaymath}
\mbox{\tt00 00 00 14 00 00 00 01 00 00 00 0e}
\end{displaymath}

となる.

なお ZZ の 0 ( (ZZ) 0 と書く ) は, (CMO_ZZ, 00,00,00,00) と表現する.



Nobuki Takayama 平成28年8月27日