🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.misc
Article #221

剰余について

#221
From: Hiroyuki Satoh
Date: Fri, 13 Mar 1998 00:00
77 lines
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-mail

Show 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