コンピュータで全く使われない数表現

43
コココココココココココココ ココココココココ ココココ

Transcript of コンピュータで全く使われない数表現

Page 1: コンピュータで全く使われない数表現

コンピュータにおける数表現面白法人カヤック岩淵勇樹

Page 2: コンピュータで全く使われない数表現

コンピュータにおける数表現

コンピュータで

全く使われない数表現

面白法人カヤック岩淵勇樹

Page 3: コンピュータで全く使われない数表現

自己紹介•岩淵勇樹 ( IWABUCHI Yu(u)ki )

• 金沢大学自然科学研究科修了• 博士(工学)• 面白法人カヤック HTML ファイ部・人事部

• 卒研で記数法を研究

Page 4: コンピュータで全く使われない数表現

アウトライン•繰り上がり則と記数法• 2 進法• φ 進法•フィボナッチ記数法•自然数より広い記数• -2 進法• 1+i 進法•物智数

Page 5: コンピュータで全く使われない数表現

繰り上がり則と記数法2 進法、 φ 進法、フィボナッチ記数法

Page 6: コンピュータで全く使われない数表現

よく使われる記数法•位取り記数法( N 進法)•人間は 10 進法、

コンピューターは 2 進法•2 進数と親和性の高い

8 進数や 16 進数もよく使われる

Page 7: コンピュータで全く使われない数表現

2 進法• 基数が 2 の位取り記数法• 桁の重みは 2n

8 4 2 1

0 0 0 0 0

0 0 0 1 1

0 0 1 0 2

0 0 1 1 3

0 1 0 0 4

0 1 0 1 5

0 1 1 0 6

0 1 1 1 7

8 4 2 1

1 0 0 0 8

1 0 0 1 9

1 0 1 0 10

1 0 1 1 11

1 1 0 0 12

1 1 0 1 13

1 1 1 0 14

1 1 1 1 15

Page 8: コンピュータで全く使われない数表現

2 進数の足し算

1

1+

Page 9: コンピュータで全く使われない数表現

繰り上がり

1

1

01

+

Page 10: コンピュータで全く使われない数表現

2 を左に

01

2

Page 11: コンピュータで全く使われない数表現

2 進数の足し算(例)

0112

+ 111

1102→100→ 1

Page 12: コンピュータで全く使われない数表現

繰り上がり則だけで足し算• 2 以上の値がある部分に、

繰り上がりのルールだけ適用すればどんな足し算もできる•初期値を 10 進数として適用すれば、

基数変換もできる

Page 13: コンピュータで全く使われない数表現

Excel で実演 (1)

繰り上がり則を適用する一番左のセル( 2 以上の数の左のセル)を選択して「形式を選択してペースト」

繰り上がり則1, -2を入力

計算したい数値を入力( ex) 1, 2, 1 )

Page 14: コンピュータで全く使われない数表現

Excel で実演 (2)

「演算」を「加算」に設定して「 OK 」

Page 15: コンピュータで全く使われない数表現

Excel で実演 (3)

適用したいセルに次々に「繰り返し」( Ctrl + Y )

対象が0 と 1 だけの行になったら計算完了!

Page 16: コンピュータで全く使われない数表現

φ 進法(黄金進法)• 基数が φ (黄金比)の位取り記数法• 桁の重みは φn

φ4 φ3 φ2 φ1 φ0 φ-1 φ-2 φ-3 φ-4

0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 0 0 0 0 1

0 0 0 1 0 0 1 0 0 2

0 0 1 0 0 0 1 0 0 3

0 0 1 0 1 0 1 0 0 4

0 1 0 0 0 1 0 0 1 5

0 1 0 1 0 0 0 0 1 6

1 0 0 0 0 0 0 0 1 7

1 0 0 0 1 0 0 0 1 8

1 0 0 1 0 0 1 0 1 9

1 0 1 0 0 0 1 0 1 10

Page 17: コンピュータで全く使われない数表現

1 の連続は禁止•φn=φn-1+φn-2

• ex) n=2 のとき1 1

001→φn φn-1 φn-2

Page 18: コンピュータで全く使われない数表現

φ 進法の繰り上がり則• φ 進法では左に 1 繰り上がり、

右に 2 繰り下がる

1101

+0 1.

(2φn=φn+1+φn-2)

Page 19: コンピュータで全く使われない数表現

繰り上がりの秘密• φn+φn=φn+(φn-1+φn-2)

=(φn+φn-

1)+φn-2

=φn+1+φn-22

1

01 0 1

1 1→

Page 20: コンピュータで全く使われない数表現

繰り上がり則だけで足し算

• 2 の左 1 、右 2 の繰り上がりと、1 の連続での繰り上がりだけを適用すればどんな足し算もできる• 初期値を 10 進数として適用すれば、基数変

換もできる

Page 21: コンピュータで全く使われない数表現

Excel で実演 (1)

繰り上がり則を適用する一番左のセル( 2 以上の数の左のセル)を選択して「形式を選択してペースト」

繰り上がり則1, -2, 0 1を入力

計算したい数値を入力( ex) 1, 2, 2, 1 )

Page 22: コンピュータで全く使われない数表現

Excel で実演 (2)

「演算」を「加算」に設定して「 OK 」

Page 23: コンピュータで全く使われない数表現

Excel で実演 (3)適用したいセルに次々に「繰り返し」( Ctrl + Y )

対象が1 が連続しない0 と 1 だけの行になったら計算完了!

0,1,1 のパターンを1,0,0 に書き換え

Page 24: コンピュータで全く使われない数表現

フィボナッチ数• F0 = 1

• F1 = 2

• Fn = Fn-1 + Fn-2

• フィボナッチ数を数列として書き下すと1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

Page 25: コンピュータで全く使われない数表現

フィボナッチ記数法• 桁の重みは Fn

8 5 3 2 1

0 0 0 0 0 0

0 0 0 0 1 1

0 0 0 1 0 2

0 0 1 0 0 3

0 0 1 0 1 4

0 1 0 0 0 5

0 1 0 0 1 6

8 5 3 2 1

0 1 0 1 0 7

1 0 0 0 0 8

1 0 0 0 1 9

1 0 0 1 0 10

1 0 1 0 0 11

1 0 1 0 1 12

Page 26: コンピュータで全く使われない数表現

フィボナッチ記数法のルール•桁の値 (digit) は 0 か 1•1 が連続してはならない

( =11 が禁止語)

Page 27: コンピュータで全く使われない数表現

ゼッケンドルフの定理•自然数は、連続するフィボナッチ

数を含まないような形で、相異なる 1 つ以上のフィボナッチ数の和として一意に表現できる

(つまり、フィボナッチ記数法の 書き方ができる)

Page 28: コンピュータで全く使われない数表現

1 の連続は禁止• Fn=Fn-1+Fn-2

(定義より明らか)

1 1

001→Fn Fn-1 Fn-2

Page 29: コンピュータで全く使われない数表現

フィボナッチ記数法の繰り上がり則

• フィボナッチ記数法では左に 1 繰り上がり、右に 2 繰り下がる

• ただし、下 2 桁 (2F1 と 2F0) だけ特殊

1

1

01

+

0 1

0

0

0

0

1

1

01

+

1

0

0

1

1

01

+

(2Fn=Fn+1+Fn-2) (2F1=F2+F0) (2F0=F1)= = = = =

2 3 1 1 2

Page 30: コンピュータで全く使われない数表現

自然数より広い記数-2 進数、 1+i 進数

Page 31: コンピュータで全く使われない数表現

-2 進法• 基数が -2 の位取り記数法• 桁の重みは (-2)n

• 整数全体を表現できる

16 -8 4 -2 1

0 1 0 0 0 -8

0 1 0 0 1 -7

0 1 1 1 0 -6

0 1 1 1 1 -5

0 1 1 0 0 -4

0 1 1 0 1 -3

0 0 0 1 0 -2

0 0 0 1 1 -1

16 -8 4 -2 1

0 0 0 0 0 0

0 0 0 0 1 1

0 0 1 1 0 2

0 0 1 1 1 3

0 0 1 0 0 4

0 0 1 0 1 5

1 1 0 1 0 6

1 1 0 1 1 7

Page 32: コンピュータで全く使われない数表現

-1+i 進法•D. Knuth (TeX の生みの親 ) が考案•複素整数を記述可能•基数が複素数

Page 33: コンピュータで全く使われない数表現

1+i 進法•2 進数の 2 を (1+i) に読み替える

(1+i)2 1+i 1

0 0 0 0

0 0 1 1

0 1 0 1+i

0 1 1 2+i

1 0 0 2i

1 0 1 1+2i

1 1 0 1+3i

1 1 1 2+3i

Page 34: コンピュータで全く使われない数表現

ツインドラゴン

Page 35: コンピュータで全く使われない数表現

物智数完全オリジナルの記数法

Page 36: コンピュータで全く使われない数表現

記数法の拡張• 位取り記数法( N 進法)の、 N の部分を拡張

→負数や複素数も表現可能に

• 記数法により、繰り上がり則も違う→もっと変わった繰り上がり則はないか?

• 数は一直線に並ぶ( ex) 10101110 )→並び方を拡張できないか??

Page 37: コンピュータで全く使われない数表現

物智数の繰り上がり則

1 1 01+1

=

Page 38: コンピュータで全く使われない数表現

物智数

1 0

0 1

1 0

0 1 1

1 0 0

1 0 0

0 1 1

1 0 0

1 0 1

0 1 1

1 0 1

1 1 0

0 1 1 1

1 0 1 0

1 1 0 0

1 0 0 0

左と上に繰り上がり

0 1 1

1 0 1

1 1 1

0 1

1 12= 3= 4=

5= 6= 7= 8=

0 1

1 0

Page 39: コンピュータで全く使われない数表現

大きい数だと

気になる方はこちらで!http://butchi.jp/documents/planar_binary/

?1000=

Page 40: コンピュータで全く使われない数表現

物智数の謎•基数は p+q=2 となる何らかの p と

q→1, 1 かもしれないし、  2, 0 かもしれないし、  1+x, 1-x かもしれない

•複素数よりもっと広い、何かを表せるに違いない!!

Page 41: コンピュータで全く使われない数表現

まとめ• 繰り上がりに着目して計算ができる

( 2 進法、 φ 進法、フィボナッチ記数法)

• 桁の重みの拡張により整数や複素数などまで表現できる( -2 進法、 1+i 進法)

• 繰り上がり方向を 2 方向にして新しい記数法を作れる(物智数)

Page 42: コンピュータで全く使われない数表現

問題集

Page 43: コンピュータで全く使われない数表現

解答問 1 1) 1010 2) 111111 3) 1111000問 2 1) 1001 2) 1101 3) 11101問 3 1) 1000.1001 2) 10100.0101 3) 100101.001001問 4 1) 1000.1001 2) 10000.01 3) 1000000.01問 5 1) 10001 2) 100000 3) 1010001問 6 1) 1000 2) 100000 3) 1000000問 7 1) 2) 3)

問 8 1) 2) 3)

0 1 1 1

1 0 1 0

1 1 0 0

1 0 0 0

0 1 1 1 01 0 1 0 1

1 1 0 0 1

1 0 0 0 0

0 1 1 0 1

0 1 1

1 0 0

1 0 1

0 1 1

1 0 0

1 0 0

0 1 1

1 0 1

1 1 1

0 1 1

1 0 0

1 0 0