「無限小数」と「無限大数」
*** 符号を使わなくても負の数を表せる ***

T:コンピュータで負の数をどう表すのか調べていたら、面白いことに気がついたよ。それは、符号(−)を使わなくっても負の数を表すことができるということだ。
S:マイナスを使わずに負の数を表すなんて、できるはずがないよ。
T:それができるんだな。

1、コンピュータは負の数をどう扱うか(2の補数)

T:二進法は、0と1だけですべての整数を表せます。
S:そういえば、前に二進法について考えたことがあるね。
T:コンピュータでは、これを OFF(0)・ON(1) に置き換えて、数を扱っています。ところが、数字を記憶しておく場所には限りがあるので、整数として扱える数には上限があります。このとき、最大何桁の二進数までを扱えるかという桁数のことをビットといい、8ビットの場合、0
(2) から 11111111(2) まで、十進数で言うと、0(10) から 255(10) の整数を表すことが出来ます。
S:負の数はどうやって表すのかな。何か別の記号をつけるというのもおかしいし。
T:そうですね。これでは、負の数は扱えません。そこで、以下のように考えます。11111111
(2) に さらに1加えると、100000000(2) ですが、8ビット分の数しか扱えないので、100000000(2) は 0(2) と見なされます。
S:コンピュータはばかだねぇ。
S:つまりコンピュータは、100000000
(2)を0と考えてしまうということでしょ。
T:そうです。そうすると、もとの 11111111
(2) は、0(2) より1小さいということになり、−1(10) を表すことになります。
S:255
(10)=−1(10)ということなの。
T:そうなってはおかしくなるので、10000000
(2)=128(10)よりも大きい数は負の数に割り当てることになっています。
S:つまり、10000000の1がマイナスの符号みたいなものですね。
T:そうなんです。同様に、
  −2
(10)=11111110(2)
  −3
(10)=11111101(2)
  −4
(10)=11111100(2)
  ・・・・・・
 −127
(10)=10000001(2)
のように決めることができます。このとき、11111110
(2)は、00000010(2)に対する「2の補数」といいます。
S:足すと100000000
(2)になるからですね。
S:結局、255個の数のうち、半分を負の数と考えようということか。

(コンピュータの負数表現には、もう一つ「ゲタばき表現」というのがあります。これはゲタをはかせるように一定の数を足すというものです。これだと0で連続になるので、指数部に用いられるそうです。)

2、無限小数と「無限大数」


T:さて、この考え(補数の考え方)を10進法に当てはめてみましょう。
S:10の補数を考えるということですか。
T:そうです。ここに、8桁(99999999)しか計算できなくて、これに1を足すと100000000になるのに、桁がないから00000000と考えてしまうコンピュータがあります。
S:電卓ではエラーと出るよ。
T:そうすると、100000000−1=0−1=−1=99999999となります。
S:なんか納得できないな。
S:100000000は99999999よりも1多い数で、0ではないよ。
T:問題はここだね。99999999を−1と考えるのは無理がある。そこで前にやった、無限小数の考え方を使う。
S:0.999…=1 というの?
T:そうだよ。これをこの数に付け足すと、99999999+0.999…=いくつ?
S:99999999.999…だ。
S:0.999…=1だから、繰り上げると100000000となるよ。
T:そうだね。では、この左側の桁を無限に大きくしていったらどうなるだろう。
S:無限大じゃないの。
T:そう単純に考えてしまわないで、これも数としてあつかうと、
S:…99999.99999…ということ?
T:そうです。これはいったいいくつになるだろう。
S:0.999…=1だから1つずつ繰り上がって…
S:…0000000.00000…となるけど、どこまで行っても1が付かない。
T:そうだね。とすると、これを0と考えてもおかしくないんじゃない。
S:えー!!
S:数が一杯詰まった0なんて何だか変だな。                .
T:0.9999…の無限小数に対して、…9999を「無限大数」と名づけます。そして、9=…999と省略します。1=0.999…というように二通りの表し方があったから、…9999999.9999999…=…0000.0000…と、0も二通りの表し方があってもおかしくないよね。
さて、ここで負の数を考えよう。0−1=…999.999…−1だから?
S:…998.999…だ。
S:…000−1を計算すると、前の桁からどんどん1を借りてきて、…999と表せる。
S:0.999…=1だから、…998.999…=…998+1=…999と考えてもいいよ。


3、10進法でマイナスの符号を使わないで負の数を表す

T:このように負の数を表すと、
  ・・・
   2=…0001.999…=…0002.000…
   1=…0000.999…=…0001.000…
   0=…9999.999…=…0000.000…
  −1=…9998.999…=…9999.000…
  −2=…9997.999…=…9998.000…
  −3=…9996.999…=…9997.000…
  −4=…9995.999…=…9996.000…
  ・・・
  −9=…9990.999…=…9991.000…
  −10=…9989.999…=…9990.000…
  −11=
  −12=
 
S:−11はどうなるのかな。
S:本当にこの表し方は正しいのですか。
T:そうだね。ちょっと不安だから、いろいろ計算して確かめてみよう。


4、…11111= はいくつ?


T:これはいくつになると思う?
S:確か、0.11111…=1/9だったよね。
S:…1111×9=…9999=−1だから・・・
S:そうか。…1111=−1÷9=−0.1111…=−1/9だ。
S:分数だって表せるということか。
S:…2222=−2/9だ。…3333=−3/9だね。
S:…010101×99=…999=−1だから、…0101=−1/99。
S:まとめると、
   …1111.0=−0.1111…=−1/9
   …2222.0=−0.2222…=−2/9
   …3333.0=−0.3333…=−3/9=−1/3
   ・・・
   …9999.0=−0.9999…=−9/9=−1
   ・・・
   …0101.0=−0.0101…=−1/99

S:…11111は無限だと思っていたけど、−0.1111…と同じになるなんて変な感じだな。
T:私たちの感覚と数学の論理の結果とが合わないとき、人はどちらを信じるか。
S:たいてい、計算が間違っているんじゃないかと思うよ。


5、(−1)×(−2)=(+2)の計算


T:この負の数を使うと(−)×(−)=(+)も簡単に計算できるんだ。
   .      .
−1=9.0, −2=98.0 だから,これを単純にかけます。
S:(−1)×(−2)=・・・999×・・・998

     ・・・999
    ×・・・998
     ・99992
    ・99991
   ・99991
   ・・・・・・・・
   ・0000002

S:ちゃんと+2になった。
T:もう一つ、0−(−1)=はいくつ?
S:こんどは、−1=…998.999…の方を使ってと、

  …999.999…
−)…998.999…
  …001.000…

S:これも+1だ。
S:これは、(−)×(−)=(+)の簡単な証明ですね。
T:ついでに、負の数の足し算・引き算もやっておこう。

  (−3)=…9997         (−3)=…9997
 +(+5)=…0005(+      +(−5)=…9995(+
  (+2)=…0002          (−8)=…9992

  (−5)=…9995         (−5)=…9995
 −(−3)=…9997(−      −(+3)=…0003(−
  (−2)=…9998         (−8)=…9992

S:正負の計算のように符号を変えなくても、そのままやれるんですね。
S:繰り下げだって、どれだけでもできるね。
S:…9995−…9997=…9998 の計算の時、引き算だけど増えているもんね。


6、…1111.1111…=?

T:これで、このような負の数の表現もあるということがわかっただろう。
ところで、…1111.1111…= は、いくつになるの?
S:…111.111…×9=…999.999…=0 だから、…111.111…=0÷9=0 です。
S:さっき、0.111…=1/9,…111.0=−1/9 というのをやったよね。ということは、
…111.0+0.111…=…111.111…でしょ。これを10進数に直すと、
1/9+(−1/9)=0 となります。
S:ヘー。ということは、
…222.222…=…333.333…=…444.444…=…=…000.000…だ。
S:0=0÷9=…999.999…÷9=…111.111… とも計算できるよ。

S:…0505.0505…= これはいくつなの?

T:面白いからぜひ考えてみて。ついでに練習問題を出すよ。

  (+5)=…0005            4       …   .
 −(−2)=…9998(−      −2)−8  → …9998)…9992.
  (+7)=             −8 
                    0

T:どうだい。符号を使わなくっても、負の数を表すことができただろう。
S:うーん。何となくわかったような気がするけど、疑問があるんだ。それは、(1)割り算をどうやってやるのか。(2)数の大小をどうやって決める(定義する)のか。(3)数直線に表すにはどうやってやるのかという3つなんだ。
T:するどい疑問だね。一緒に考えていこう。
まず(1)割り算のやり方はどうしたらいいのだろうか、いろいろ計算してみよう。
S:負の数になる割り算は、右側に割る数を書いていくといいよ。
S:どうして?
S:だって、負の数は左側に無限に続く数になるだろ。

     0.142857…   …142857.      .    0.14…     …57.
7.000…)1.000…      …0001(…9993   93)…999.0       …999(7
     70        …9951         …99 3        49 
     30         050        …99 7      …995
     28        …965         …99 72       35
      20        04      
      14       …944      
      60        06      
      56      …986      
       4       02      
            …972      
             03       
            …93      
             01       

T:次は(2)大小の決め方(定義)だけど、「2つの整数」を比べるにはどうするか。「十分に大きなn(自然数)を決めて、10nを、2つの数それぞれに足す。」という方法で比べるというのはどうだい。足した数は、自然数になるので自然数の大小で比較できる。
S:負の数どうしはそれでいいの?
T:例えば、…9912.(=−87)と…9123.(=−876)を比べるために、両方に1000を足すと、912と123になる。もちろん、912>123だから、…9912.(=−87)の方が大きい。


7、1+x+x2+x3+…=1/(1−x) が、x=2でも成り立つ!

S:こんなことを考えて何か役に立つんですか?
T:最初これを考えたのは、面白かったからで、役に立つかどうかを考えてわけではないよ。
S:でも、この考えを元に数学体系を築いて、何か利益があるようならば参考にすべきでだけど、この突飛な考えに惑わされて時間をつぶすのは無意味だと思うな。
T:そう言われると弱いな。でも、数学を理解するだけでなく数学を創りだすということはもっと大事にされてもいいんじゃないかな。
S:創りだした先生はいいけど、聞かされる方はやっぱり体系を教え込まされる様な気がするんだ。
T:そういえばそうだね。では、少しは役立つようなことを考えてみようか。

1+x+x^2+x^3+…=1/(1−x)    ( |x|<1 )・・・(1)
という「べき級数の公式」がありますね。これが無限大数を使うと、χ=2でも成り立つことが示せるよ。
S:これにはχ<1という条件があるよ。χ=2だと左辺は無限大に発散してしまうよ。
T:普通の数なら発散するけど、無限大数を使って考えるとどうなるか。
まず、χ=10のとき、
1+10+100+1000+…=…111=−1/9 になることについては公式どおりです。
次にχ=2のときは、右辺は−1になります。
左辺は1+21+2
2+23+…なので、二進法で表記すると、…11111(2)となります。
これに1を足すと、…11111
(2)+1=…0000となるので、…11111(2)=−1と考えることができます。
さらにχ=3のときは、s=1+3+32+33+…で、公式に当てはめるとs=−1/2となりますが、このsを三進法表記すると、…11111
(3)となります。これを2倍すると…2222(3)となり…2222(3)+1=…0000となるので、2s=−1でs=−1/2と意味づけることができます。
これをまとめると、

   10進法      x進法
1+10+100+1000+…=…111
(10) =−1/9
1+2+4+8+…   =…111
(2) =−1 
1+3+9+27+…   =…111
(3) =−1/2
1+4+16+64+…  =…111
(4) =−1/3
1+x+x^2+x^3+… =…111
(x) =1/(1−x) … (1)

こう考えると、(1)の公式が拡張できたことになります。
S:公式に条件があるときれいに見えないもんね。
S:…999(10)=…111(2)=…222(3)=−1 というのは何だか奇怪だね。
S:左辺を見ると無限大になるとしか見れないなぁ。
S:何だか信じられないよ。
T:べき級数をχ進数で表現するというところがアイディアなんだ。これは布団の中に入ってから思いついたんだけど、それからは興奮して眠ることができなかったな。


8、…abcは負の数だけか?

S:無限大数…abc.は負の数を表しているということなの?
T:…001.や…003.は正の数ですね。でも今のところそれ以外は負の数だね。では、0−(−1/9)=はいくつになるかな?
S:これは、1/9を求めるということですね。…000.−…111.だから…889.だ。
S:ということは、負の数だけでなく、正の小数も表せるわけですね。
T:ついでに、1/2,1/3,1/4,1/5,1/6,1/7,1/8を計算してみよう。
S:どうやってやるの?
S:マイナスがわかっているから、…000から引けばいいよ。
S:割り算をする方法もあるよ。
S:この割り算は一桁目をそろえなければならないね。
S:一桁目が合わない場合は、右に0をつけてから割るんだね。

     …00.5         …857143.
   …0001.0(2         …001(7
       1 0            21
      0           …998
                   28
    …333.5         …997
      1.0(6          7
       3 0        …999
    …998           49
      18         …995
   …998           35
     18         …996
   …998           56
               …994

S:割り算の時、こういう一桁目の九九表があると便利だよ。

*|1 2 3 4 5 6 7 8 9 0
1|
1 2 3 4 5 6 7 8 9 0
2|2
4 6 8 0 2 4 6 8 0
3|3 6
9 2 5 8 1 4 7 0
4|4 8 2
6 0 4 8 2 6 0
5|5 0 5 0
5 0 5 0 5 0
6|6 2 8 4 0
6 2 8 4 0
7|7 4 1 8 5 2
9 6 3 0
8|8 6 4 2 0 8 6
4 2 0
9|9 8 7 6 5 4 3 2
1 0
0|0 0 0 0 0 0 0 0 0
0

S:この九九表だけでも不思議なことがいっぱいあるよ。
T:そうだねぇ。とりあえず分数をまとめてみるよ。

1/2=…000000.5
1/3=…666667.
1/4=…000000.25
1/5=…000000.2
1/6=…333333.5
1/7=…857143.    (循環します)
1/8=…000000.125
1/9=…888889.


9,2次方程式 χ2=1 の解は?

T:どうやらこの無限大数は分数も負の数も表せるようだね。しかも、足し算の結果は無限大数になるし、かけ算もできる。では、今までの私たちの使っている数は全て無限大数で表されるのだろうか。
S:例えば、√2なんかはどういう数になるのかな。
T:よし、やってみよう。まず、χ×χ=1を考えてみよう。つまり、…abc×…abc=…001となる…abcを見つければいい。
S:χ=1と−1じゃないの?
T:本当にこの2つだけだろうか。やってみようよ。
S:そのためには2乗の表が必要だね。
S:22=4とか32=9の表か。さっきの九九の表で、右下の斜めの対角線を見ればいいよ。
S:まず、一桁目は、2乗して1になる数だから1と9がある。

1の場合は、(10p+1)(10p+1)=100p2+20p+1だから2桁目は2p=0となる数5とわかる。
2桁目は、(100p+50+1)(100p+50+1)を展開して百の位を見ると、2p+5+1=0となるpをさがすと、2の段で4になる数は2と7。
2とすると、(1000p+200+50+1)2を展開して千の位を比べると、2p+3=0。これはない。
7とすると、7512=…4001だから、2p+4=0となるpは3と8。
3とすると、37512=…70001だから、だめだ。8だと、87512=…80001だから、2p+8=0
 ・・・
S:面白いな。ぼくは一桁目が9の場合をやってみるよ。
 ・・・

S:…63574218751となった。
S:こっちは、…36425781249だ。
S:この2つの数は1でも−1でもないよ。
S:この2つの数を足すと0になる。
S:2つの数をかけると…9999になる。
T:χ2−1=0だから解をα,βとすると、αβ=−1だし、α+β=0だよ。
S:ということは、この方程式の解は4つあるということなの。
T:うん、そうなるね。
S:2次方程式の解は二つあるということをならったよ。
T:ということは、この2つの数は今までの実数とは違う数ということになる。ぼくたちは新しい数を発見したんだ。
S:本当に新しい数なのかな。何だか変すぎる。
T:実はね、ちょっと自信がなかったのでMLで紹介したら、こういう数を100年前に発見した人がいたと教えてくれた。
S:どこの人?
T:ドイツの人で、クルト・ヘンゼルという。彼は、7で考えたようにこの数をさらに一般化した。そして、素数pを使ってp進法で表した無限大数を、P-進数というらしい。
S:こんな変なことを考える人がちゃんといるんだ。
S:ということは、この数を調べると現代数学とも「つながる」ということですね。
T:そうですね。では、先ほどのχ2=nについて調べてみよう。
χ^2=1についてはχ=1,…9999,…63574218751,…36425781249と4つ解があった。
では、χ2=2,χ2=3,χ2=4,χ2=5,χ2=6,χ2=7,χ2=8,χ2=9について調べてみよう。
S:みんなで分担を決めて調べてみようよ。
S:よし、やってみよう。
・・・
S:でたでた。
S:あれ?この数は見つからないぞ。
T:よし、ではまとめてみよう。χ2=2は?
S:ありません。
S:どうして?
S:だって、二乗して一の位が2になる数はないから。
S:無限小数なら計算できるんだけどな。1.41421356…。
T:χ2=3は?
S:同じくありません。
T:χ2=4は?
S:χ=2,…9998,…72851562498,…27148437502
S:1の時と同じで4つある。
T:χ2=5は?
S:ありません。
T:χ2=6は?
S:一の位は4と6があるけど、計算すると十の位がないのです。
T:χ2=7とχ2=8は?
S:ありません。
T:χ2=9は?
S:χ=3,…9997,…90722656253,…09277343747
S:この結果を見ると、整数の解がある場合にしか無量大数はないようだね。
S:ということは無量大数には実数にあたるものはないということかな。
S:この数が実数みたい。
S:ところで、実数というのは循環しない無限小数で表されるんだろ。この単純じゃない方の無限大数は、実数みたいに循環しないのかな。
S:計算したところそう感じるよ。
S:証明できないの?


10,αβ=0なのに、どちらも0ではない数がある!

T:今度はαβ=0で,α+β=1になる無限大数を求めてみようか。
S:そんなの0と1しかないよ。
S:さっきも4つあったから,今度もあるかもしれないよ。
T:実際に計算してみよう。このαとβは,2次方程式χ2−χ=0の解だから…。
S:式を変形すると,χ2=χだから,2乗して自分自身になる数を求めるんだね。
S:まず,一桁目は2乗して自分自身になる数だから,0と1と5と6の4つがある。
S:0と1のときは,0×0=0と1×1=1で,α=0,β=1と求まる。
S:5のときは,(10p+5)(10p+5)=100p2+100p+25だから,元の十の位の数はすぐにp=2とわかる。次は百の位の数を求める。百の位の数をpとすると,
 (100p+20+5)(100p+20+5)を展開して百の位を見ると、p=1+1+4=6とわかる。
 (1000p+600+20+5)2を展開して千の位を比べると,3+3+2+2=10だからp=0。
S:思ったより簡単に求まるね。
T:以下同様に調べていくと、どこまでも続く無限大数になる。
S:えーと,とりあえず20桁まで求めると,
 α=…92256259918212890625

S:6のときは,(10p+6)(10p+6)=100p2+120p+36だから,十の位の数は2p+3=pだから,p=−3?
S:pを1から順に2にかけて一の位がpになるのは7だよ。
S:そうか。とすると次は(100p+76)×(100p+76)=10000p2+15200p+5776だから,2p+7=pになるpは?
S:2×3+7=13だから,p=3だ。以下同様に,・・・
S:β=…07743740081787109376
 
S:この2つの数をかけてみよう。

          …92256259918212890625
        ×)…07743740081787109376
                 …43750
                 …34375
                …71875 
                …15625 
                …0000  
              ・・・・・・・
              …00000000000

S:確かに0になる。
S:どちらも0じゃないのにかけると0になる数があるんだね。
S:αβ=0のとき、α=0かβ=0のどちらかであるとならったよ。
T:だから,この数は今までの数とは違うんだ。
S:もちろん2つの数を足すと1になる。

           …92256259918212890625
         +)…07743740081787109376
           …00000000000000000001

S:不思議な数だなあ。

S:ところでこの無限大数には大小はないのじゃない?
T:どうして?
S:だって、…90722656253,…09277343747はどちらが大きいといえないよ。
S:そうだよね。
S:とすると、これは数直線に表せないよ。



11,「無限大数」の大小をどう考えるか

T:無限大数には大小がないと思っていたけど、山崎さんという方からこんなことを教えてもらいました。
S:どこで教えてもらったの。
T:インターネットのメーリングリストだよ。一人でやるより、いろんな人の意見を聞く方がわかるんだ。
------------------------------------------------------------
大阪大学出版会『現代数学序説(V)』の第4章「みんなの知らない数」p.91に、P進法の考えから7進法で
−1/6=1+7+72+73+・・・
となると紹介されています。

特に分からないのが
n → ∞ なら 7n → 0
です。何か変ですね。<P進付値>とかいう絶対値だそうです????

これは<現代数学の種>のようですよ!!!
------------------------------------------------------------
山崎さんありがとうございます。
同じようなことを考えた人がいるのですね。
私も、
Sn=1+7+72+73+・・・・・+7n
Sn=(7(n+1)−1)/6 ですから、
lim Sn=lim(7(n+1)−1)/6=…111(7)=−1/6となるなら、
n→∞  n→∞
n→∞ なら 7(n+1)→0 となるはずで、

7n=1000…000(7) (0がn個)ですから、
n→∞ なら 7n=1000…000(7)→…000(7)=0と考えるといいのではと思っていました。

さっそくこの本を読んでみます。
------------------------------------------------------------
T:この本を読みました。
S:すばやいね。

0に近い数の考え方

T:n→∞ なら 7n=1000…000(7)→…000(7)=0 と考えられるように絶対値を設定してみよう。
つまり、0と7n共通点は何か?
S:ないよ。0と7×7×7×…×7は違いすぎる。
T:ところがあるんだな。大小ではなく、素因数分解して調べるんだ。
S:素因数分解しても同じところはないよ。
T:それは、0は7で何回でも割れる。7nは7でn回割れるという点。
つまり、7でたくさん割り切れる方が0に近いと考える。例えば、1と7と14ではどちらの方が0に近いというと、1は0回、7は1回、14は2回割れるので14が一番近いということになります。7nならn回です。
S:0から離れるほど近いなんておかしいよ。
T:それは今までの距離(絶対値|a|)で考えているからだよ。この絶対値だって|a|=√a2というように定義したものなんだ。
S:割れる回数の多さで絶対値を定義しなおそうということですか。
T:ということで、このnで近い遠いを表現できます。そして、このことを数値化したのが「付値」です。

整数 a=7n・b   (bは7で割り切れない) のとき、7nの「絶対値」を
|a|7=1/7n とします。
逆数にしたのはnが大きいほど0に近づくからです。さっきの、7(n+1)は、nを無限大とすると0となります。

分数の場合は、a=pn・(b/c)    (b・cともpで割り切れない) とすると、
|a|p=1/pn

この|a|pを<P進付値>といい、もうひとつの「絶対値」なのです。(0との「p進距離」と定義する場合もある)

T:この「絶対値」を使うと、7 の「[7]絶対値」はいくつ?
S:|7|7=1/7だから、1より小さい。
T:ということは、x の「[7]絶対値」が1より小さいときに成立する次の等式が、7進数の世界では x = 7でも成立していると考えることができます。
1 + x + x2 + … + xn + … ==1/(1-x)=−1/6
S:つまり、条件を変えなくてもこの式が成立している。

S:有理数の場合にも、この「絶対値」を使って、新しい大小が決まるということなんだね。
S:無限大数の場合も、新しい「絶対値」で大小を決めれば良いということか。
T:ところが、絶対値から大小を決めることはできない例もあるんだな。例えば、複素数には絶対値を決めることができるけど、大小は決めることができない。
S:絶対値と大小は別のものということですか。
T:そうだね。
S:そうするとこの絶対値(P進付値)の意味は何なの。
T:この「絶対値(P進付値)」を使って、普通の有理数から「無限大数」を作ることができるということですよ。つまり、「…9999+1=0」と考えることは、この「絶対値」の考えを使っているということなんだ。

参考文献 【p-進世界へようこそ

もどる