読み方 : じょうよえんざん

剰余演算【モジュロ演算】mod

別名  :modulo operation/modulus operation

概要

剰余演算とは、割り算の余りを求める演算。ある数値(通常は整数)を他の数値で除算する際に、割り切れずに余った数を求める。
剰余演算のイメージ画像

数値aをbで割る計算(a/b、a÷b)で、商を整数とした時に割り切れずにあまった値である剰余(remainder)を求める演算で、「a mod b」のように表記する。例えば、aが5、bが2の場合、a÷b=2…1となるため、「a mod b」は1となる。

コンピュータでは剰余演算を様々な場面で用いるため、多くのプログラミング言語にも除算とは別に剰余演算を行う機能やそのための演算子、関数などが組み込まれている。C言語では「%」(パーセント記号)が剰余演算子であるため、その記法を受け継ぐ多くの言語(C++言語やC#、JavaJavaScriptなど)が「%」を用いるが、「mod」「MOD」などとする言語も多い。

言語によって演算対象を整数のみとする場合と、浮動小数点数など実数を含む数値型に対応している場合がある。負数を含む剰余演算では剰余を正とすることも負とすることもでき、多くの言語は剰余の符号が被除数(割られる数)の符号に一致するよう計算するが、序数(割る数)に揃えたり、常に正としたり、言語仕様では定義せず実装依存の言語もある。

なお、コンピュータで整数演算を行う場合、2のn乗、すなわち2進数で表したときに「100…」となる除数で割ったときの剰余は、被除数のビット列の下位n-1桁を抜き出したものに等しい。これは2のn乗-1で論理積AND演算)を行うことを同じであるため、除算を実行しなくても高速に結果を求めることができる。例えば、16(2進数「10000」)で割る剰余演算は、被除数の下位4ビットを取り出す操作に等しいため、ビット列「1111」(16から1を引いた15)とのAND演算を行えばよい。

(2025.8.18更新)

他の用語辞典による「剰余演算」の解説 (外部サイト)

資格試験などの「剰余演算」の出題履歴

▼ 基本情報技術者試験
令6修12 問6】 アルファベット3文字で構成されるキーがある。次の式によってハッシュ値hを決めるとき,キー “SEP” と衝突するのはどれか。
令6修1 問6】 アルファベット3文字で構成されるキーがある。次の式によってハッシュ値hを決めるとき,キー “SEP"と衝突するのはどれか。
令4修6 問8】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
令4修1 問8】 アルファベット3文字で構成されるキーがある。次の式によってハッシュ値hを決めるとき,キー “SEP” と衝突するのはどれか。
令1秋 問10】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平30修7 問6】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平29修1 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平26修7 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平26修1 問8】 アルファベット3文字で構成されるキーがある。次の式によってハッシュ値hを決めるとき,キー “SEP” と衝突するのはどれか。
平25春 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平22秋 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平22修7 問6】 アルファベット3文字で構成されるキーがある。次の式によってハッシュ値hを決めるとき,キー “SEP” と衝突するのはどれか。