整数除算とは
せいすうじょざん
整数どうしの割り算で、商を整数にする演算。小数点以下の扱いは言語によって異なり、0に近い方へ切り捨てるもの(C、Java)と、小さい方へ切り下げるもの(Python の //)がある。正の数どうしでは同じ結果になるが、負の数では異なる。
「整数除算」は、1分野の1問の練習問題に出てきます(プログラミングの基礎(擬似言語のトレース)など)。
この用語の分野: プログラミングの基礎(擬似言語のトレース)
せいすうじょざん
整数どうしの割り算で、商を整数にする演算。小数点以下の扱いは言語によって異なり、0に近い方へ切り捨てるもの(C、Java)と、小さい方へ切り下げるもの(Python の //)がある。正の数どうしでは同じ結果になるが、負の数では異なる。
「整数除算」は、1分野の1問の練習問題に出てきます(プログラミングの基礎(擬似言語のトレース)など)。
この用語の分野: プログラミングの基礎(擬似言語のトレース)
−7 を 2 で割ると、商を0に近い方へ切り捨てる C や Java では商が −3、余りが −1 です。小さい方へ切り下げる Python の // では商が −4 で、% の余りは 1 になります。どちらも「商 × 除数 + 余り = 被除数」が成り立ち、余りの符号は、C では割られる数と同じ、Python では割る数と同じになります。負の数を扱うプログラムを別の言語へ書き換えるときに、誤りの原因になります。
擬似言語の問題では、÷ の結果の小数点以下をどう扱うかを問題文で説明します。例えば「整数型の変数に代入するときは小数点以下を切り捨てる」とあれば、(lo + hi) ÷ 2 の結果を整数型の mid に代入すると、lo + hi が奇数のときの0.5が捨てられます。二分探索の中央の位置などで、この切り捨てが結果を左右します。
2のべき乗で割る整数除算は、2進数の右シフトでも計算できます。符号なしの整数なら、x を2で割った商は、x を1ビット右へずらした値です。ただし、負の数の算術右シフトは小さい方への切り下げになるので、0の方への切り捨てとは結果が異なることがあります。
整数の0による除算は、多くの言語で実行時の誤り(例外)になり、C言語では未定義の動作です。プログラムでは、割る前に除数が0でないことを確かめます。
商を q、余りを r とすると、被除数 = q × 除数 + r が成り立ちます。商と余りは組で決まるので、商の丸め方(切り捨てか切り下げか)が変われば余りも変わります。
x mod 10 は x の一の位を取り出し、x ← x ÷ 10 は小数点以下を切り捨てる整数除算になるので、一の位を取り除きます。
÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 f を f(9087) とし…Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。