基数変換
\documentclass{jsarticle} \begin{document} \section*{位取り記数法の基数変換の一方法} $A$、$B$をそれぞれ1以上の整数とする。 ある非負整数が$M$桁の$A$進数で表記されているとき、 これを$B$進数で表記し直した場合の桁数$N$と各桁の値を求める。 $m$を$0 \le m < M$の整数とし、 $A$進数表記での$A^m$の桁を$a_m$とする。 $a_m$は$0 \le a_m < A$の整数である。 また、$n$を$0 \le n < N$の整数とし、 $B$進数表記での$B^n$の桁を$b_n$とする。 $b_n$は$0 \le b_n < B$の整数である。 すなわち、問題は$A$、$B$、$M$、$a_m$から$N$、$b_n$を求めることである。 これは以下の手順で求められる。 \begin{figure}[!h] \setlength{\unitlength}{2em} \begin{center} \input{bt.pic} \end{center} \end{figure} \end{document}
bt.flo
Down Oval 2 1 開始 Box $N \leftarrow 1$ $b_0 \leftarrow 0$ $m \leftarrow M-1$ Box 4 1.5 $c \leftarrow a_m$ $n \leftarrow 0$ Box 4 2.5 $c \leftarrow A b_n + c$ $b_n \leftarrow c \bmod B$ $c \leftarrow \lfloor c / B \rfloor$ $n \leftarrow n+1$ Choice . . Y N 4 2 $n < N$ Tag Right 1 Up 5 Left 3 * ToTag Down Choice . . Y N $c > 0$ Tag Box 4 1.5 $N \leftarrow n$ $m \leftarrow m-1$ Choice . Y . N $m \ge 0$ Tag Left 1 Up 16 Right 3 * ToTag Down Oval 終了 ToTag Right Box 4 2 $b_n \leftarrow c \bmod B$ $c \leftarrow \lfloor c / B \rfloor$ $n \leftarrow n+1$ Up 0.5 Left 5 *
bt.picはフローチャートをpicture環境に出力するflowで作成した。
flowはCTANにCで書かれたソースがある。
flow < bt.flo > bt.pic