作者: T.Watanabe
日時: 2007/11/04(09:34)
  ねこ丸です。

  急激な展開を見せてますね^^;

Bruce. さんは書きました:

>> とにかく上位バイトを全部1で埋めちゃえ、っていう法則なの
>> でしょうか?
>
> コンピュータにおける整数演算の場合、ほとんどの場合負の数は補数
(complement)
> というものを使って表されます。この補数という概念を使うことによって、引算を
> 足算に化けさせることができます。n進数があったとき、補数にはnの補数と
> n-1の補数の二つの補数があります。十進数であれば10の補数と9の補数です。
> 二進数であれば2の補数と1の補数です。通常コンピュータで使われるのはこの
うちの
> 2の補数の方です。


  蛇足と言うかすでに茶々ですが、補数ってのは言ってしまえば表現の問題で、
10進数の世界でも負の数を補数で表現する計算器が身近にあります。

  そろばんです。(え?もう身近にない?)

  乱暴に言うと、マイナスという記号を持ち込むことができない、「桁」しか
ない道具でもマイナスを表現する際に補数が使える、というわけです。

  そろばんで引き算をするときに「あ、足りない」と思ったらおもむろに頭に
9 をいくつも置いて、あたかも大きな1万とか1億とか1超とか、とにかくでかい
数から引いているように見立てて、計算します。計算途中でその頭の 9 がなく
なって「1」が表れたら無事にプラスになった証拠なのでその 1 を消しちゃい
ます。(だから通常、その 1 が借金を返し終えた 1 なのかどうか区別をつけ
やすいように思い切り大きい数を「見立て」に使います。ただしあまり大きな
数にするとプラスに転じるときに弾く珠の数が増えて時間が掛かるので、速度
的に不利になります。)9 の連続が消えなかったらマイナスなので、答えは
「マイナス」で、あとは珠のない部分を読み上げていく。最後に 1 を足せばご
明答。

(つまり答えを読み上げる最後の瞬間だけは桁上がりを含めた暗算を行う必要
があります。緊張します。まぁ、慣れてる人はそろばんの右の方の開いてるス
ペースで下の位だけちょちょっと計算し直しますが。)

  これはつまり10進数の10の補数を使っているのですが、9の補数はそろばんで
ものごく簡単に求めることができるのです。そろばんは各桁に 9個の珠がつい
ていますので、「入っていない珠の数」を読み上げていけば補数になります。

# 補数を知ったとき、そろばんがこんな形で役に立ったことに驚きました。やっ
# ぱり計算器なんだなーというか。ただの習い事じゃーないのですよね。

--
    ねこ丸%とは言え実際には人に教えるときくらいにしか役に立たない