Article View: fj.lang.misc
Article #221剰余について
From: Hiroyuki Satoh
Date: Fri, 13 Mar 1998 00:00
Date: Fri, 13 Mar 1998 00:00
77 lines
3741 bytes
3741 bytes
(FAQでありましたら御勘弁ください。)
割り算(除算)で、答えを「商」と「余り」という形式で表す場合、
「余り」の定義とは何でしょうか?
文献や数学に長けた人々の見解を集約したところ、
-------------------------------------------------------------------
代数学の除法定理によれば、
整数 A, B があり、B > 0 の場合、これに対して
A = ( B * q ) + r
0 <= r < B
であるような整数 q, r がただ一組存在する。
q を A を B で割った「商」、r を「余り」という。
とあります。
ここから「余り(r)は0及び自然数である」という前提が推論されます。
-------------------------------------------------------------------
数学上のモジュロ関数の考え方では、
剰余を求める関数を、mod( A, B ) 但し、A が被除数、B が
除数とするとき、mod( A, B )は、B と同符号をとり、その絶対
値は B の絶対値より小さい。
つまり、商を Q とすると、A = B * Q + mod( A, B ) を満足し
なければならない。
これにより、例えば -5 / 2 の 商は -3,余りは 1 となる。
-------------------------------------------------------------------
また、
「余り」という言語表現を自然に考えれば、「余り」にマイ
ナスはない。つまり常にプラスである。
という感覚的なところに理由を置く説もあります。
-------------------------------------------------------------------
これらに共通なのは、マイナスの剰余は存在しないという点です。
さて、ここからがコンピュータ言語の算術演算子や算術関数について
の話です。
例えばC言語では、
signed int nA, nB, nQuot, nRem;
nQuot = nA / nB;
nRem = nA % nB; とする場合、
nA = -5, nB = +2 では、 nQuotは -2, nRemは -1 となり、
nA = +5, nB = -2 では、 nQuotは -2, nRemは +1 となります。
他にもVisualBasic, Pascal, JAVA でも結果は同様です。
ANSIによる定義では、「剰余は商と同符号をとる」とありますし、
Microsoft固有仕様としては 「モジュロ演算子 % の剰余式の結果は、
必ず第1オペランドと同じ符号となる」とあります。
どちらにしてもこれらは、数学上の考え方とは異なるようです。
コンピュータ言語で、「これが仕様」と決められ、広く認知されて
いる以上、それを否定するつもりは全くありません。
私が知りたいのは「算術」演算子/関数によって導かれる結果を、
「なぜ数学上の概念と違う仕様に決めたのか?」という事です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
「余り」について上記以外の定義や説があるのかも知れません。
これらについて、明快な解答をお持ちの方がいたら御教授願います。
# 手元にあるバージョンのjparl では、
# -5 / +2 は -2, -5 % +2 は +1
# +5 / -2 は -2, +5 % -2 は +5 になっちゃいます。
# これは話になりませんね。制限仕様?バグ?
--
佐藤 弘幸 (Hiroyuki Satoh)
E-mail address : h-satoh@tkb.att.ne.jp
Technical Details
Message-ID:
<6eb19n$lv3$1@sunny.njk.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 10b195,716a868b8fc068f4,start X-Google-Attributes: gid10b195,public From: h-satoh@rd.njk.co.jp (Hiroyuki Satoh) Subject: 剰余について Date: 1998/03/13 Message-ID: <6eb19n$lv3$1@sunny.njk.co.jp> X-Deja-AN: 333642423 Mime-Version: 1.0 X-Forwarded: by - (DeleGate/4.4.1) Content-Type: Text/Plain; charset=ISO-2022-JP Organization: NJK corporation Tokyo, Japan Newsgroups: fj.lang.misc