2.3.2. Bit String to Integer (ビット列から整数へ)
2.3.2. Bit String to Integer (ビット列から整数へ)
bits2int 変換は, blen ビットのシーケンスを入力として受け取り, 2^qlen よりも小さい非負整数を出力します。これは以下のステップから構成されます:
-
シーケンスは最初に長さ qlen に切り詰められるか拡張されます:
-
qlen < blen の場合, qlen 個の左端のビットが保持され, 後続のビットは破棄されます。
-
そうでない場合, qlen-blen 個のビット (値ゼロ) がシーケンスの左側に追加されます (つまり, シーケンス順序で入力ビットの前に)。
-
-
結果のシーケンスは, ビッグエンディアン規則を使用して整数値に変換されます: 入力ビットが b_0 (左端) から b_(qlen-1) (右端) と呼ばれる場合, 結果の値は次のようになります:
b_0*2^(qlen-1) + b_1*2^(qlen-2) + ... + b_(qlen-1)*2^0
bits2int 変換は次の方法でも説明できます: 入力ビットシーケンス (長さ blen) はビッグエンディアン規則を使用して整数に変換されます。次に, blen が qlen よりも大きい場合, 結果の整数は blen-qlen を2で累乗した値で除算されます (ユークリッド除算: 余りは破棄されます)。大きな整数の算術演算の多くのソフトウェア実装では, その除算は blen-qlen ビットによる "右シフト" に相当します。