シフト最適化とは? わかりやすく解説

シフト最適化

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/28 23:15 UTC 版)

ショーンハーゲ・ストラッセン法」の記事における「シフト最適化」の解説

アルゴリズム途中で2の累乗1の冪根を含む)との乗算除算多く場合少数シフト演算加算によって置き換えられる。これは次の性質利用している (2n)k ≡ (−1)k mod (2n + 1) ここで 2n を基数とする位取り記数法において k 桁の数は ( d k − 1 , … , d 1 , d 0 ) {\displaystyle \scriptstyle (d_{k-1},\dots ,d_{1},d_{0})} と表され、 ∑ i = 0 k − 1 d i ⋅ ( 2 n ) i {\displaystyle \scriptstyle \sum _{i=0}^{k-1}d_{i}\cdot (2^{n})^{i}} の数を示しそれぞれd i {\displaystyle \scriptstyle d_{i}} 0 ≤ d i < 2 n {\displaystyle \scriptstyle 0\leq d_{i}<2^{n}} である。 この表現により、数を mod 2N + 1 において簡単に削減可能である。最下位である右端から n ビット取り上げ次の n ビットを引き、さらに次の n ビットを足す…と全てのビットに対して行う。その結果が 0 から 2n の範囲ない場合は、2N + 1倍数を足すことで正規化する。例えば、 n = 3 であり法が23+1 = 9 である場合に 656 は以下のように減らされる。 656 = 1 010 010 0002 ≡ 0002 − 0102 + 010212 = 0 − 2 + 2 − 1 = −1 ≡ 8 (mod 23 + 1). さらに、シフト演算結果構築することなく、非常に大きなシフト行える。0 から 2n の範囲のAを考え、それに 2k乗じた場合には、k を n で割って k = qn + r ( r < n )を得る。このとき A(2k) = A(2qn + r) = A[(2n)q(2r)] ≡ (−1)q · shl(A, r) (mod 2n + 1). が成り立つ。ここで、shl(A, r)は A を r ビットシフトしたものである。A は 2n 以下で、 r < n であるため、r ビットシフトされた A は高々 2n−1 ビットであり、1回シフト演算正規化のための減算のみが必要である。 最後に2k で割る場合には、2nが原始根であることを用いれば 22n ≡ 1 (mod 2n + 1) である。したがって A/2k = A(2−k) ≡ A(22n − k) = shl(A, (2n − k) (mod 2n + 1))である。

※この「シフト最適化」の解説は、「ショーンハーゲ・ストラッセン法」の解説の一部です。
「シフト最適化」を含む「ショーンハーゲ・ストラッセン法」の記事については、「ショーンハーゲ・ストラッセン法」の概要を参照ください。

ウィキペディア小見出し辞書の「シフト最適化」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「シフト最適化」の関連用語

シフト最適化のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



シフト最適化のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのショーンハーゲ・ストラッセン法 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS