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

剰余演算 【モジュロ演算】 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#、Java、JavaScriptなど)が「%」を用いるが、「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 令6修1 問6 令4修6 問8 令4修1 問8 令1秋 問10 平30修7 問6 平29修1 問7 平26修7 問7 平26修1 問8 平25春 問7 平22秋 問7 平22修7 問6