項目種別
訂正
登場した回
伝えた回
分類
剰余演算子 (`%`)除算や剰余におけるオーバーフロー負の値に対する剰余
記載日
Feb 5, 2024 3:35 PM
関連資料
負の値に対する剰余について 第256回 で話をしましたけれど、このときは盛大に混乱をしていてそもそも見当違いな話に終始していました。
これについては 第343回 で改めて、剰余について調べる機会に恵まれて確認できたので、剰余についての詳細はそちらで確認してください。
簡単にまとめると、ある値 a があったときに、これを n で割ったときの商が q だったとすると、剰余 r は次の式で表現できます。
ここで q や r として、さまざまな値が当てはめられるのですけれど、剰余の計算においては r は n の絶対値より小さい値であるとします。
この場合でも q や r に当てはまる数は、正の値と負の値とが存在します。
ここで a と n が正の値であれば、何気なく r の値も正の値を選べますけれど、負の値が混ざったときに r を正の値とするか、負の値とするか、判断に迷うところです。実際、どちらであっても式を満たせば正しいのですが、プログラミングでは言語によってどちらを採用するかが変わってきます。
Swift の場合は a が負の値だったときに、その剰余には負の値が採用されます。a が正の値だったときには、その剰余は正の値になります。