|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。
リングバッファ (ring buffer)、またはサーキュラーバッファ (circular buffer)、環状バッファ(かんじょうバッファ)は、図のようなリング状に配置されたバッファである。 ==仕組み== バッファを物理的にリング状に配置することはできないので、インデックス(添え数)をバッファサイズで割って剰余を取る正規化をし、一定の範囲に限定することで、直線状のバッファの両端を論理的に繋げる。正規化により、インデックスがバッファの最後を超えると最初に戻り、また負数が適切に処理されていれば、バッファの最初より前になると最後に進む。 正規化の内容は剰余演算だが、実際には、バッファサイズを2の冪に切り上げ、「バッファサイズ-1」とのビットごとの論理積を求めることが多い(ソースコードでは剰余のままであっても、現在のコンパイラの多くは、2の冪での剰余を自動的にビットごとの論理積に最適化する)。ただしバッファサイズを切り上げると余分なメモリが必要になるため、メモリ使用量の制約が強いときはバッファサイズを半端なままにしておき、一般的な方法で剰余を求めたり、バッファの端に達したかどうかで条件分岐したりする。 ただしこれらは、インデックスが0オフセット(始まりが0)の場合の話である。1オフセットなどオフセットがある場合は、0オフセットのインデックスに換算して正規化する必要がある。 リングバッファのインデックスは、数論的には剰余類をなす。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「リングバッファ」の詳細全文を読む スポンサード リンク
|