煙と馬鹿と俺 2.1


計算機の計算方法
10月 15, 2008, 5:31 pm
Filed under: life | タグ: ,

写真はうちのネコ。
基本俺の事は避けて生きている(小さな頃に机に乗るたびにしかってたから)のに
突然膝の上に来たと思ったら爆睡。ネコ万歳。

本題は計算機ってどうやって計算してんの?
ということ。

今まで生きてきて一度も不思議に思ったことは無かったし、
計算機ってなんで計算できるんだ!って予備知識無しに思える人がいたら
結構すごいと思うのだ。
どうして凄いと思うのかをちょっと説明しよう。

お題:
何回入力されるのかわからない。
最初に入力された数字が最上位の桁。
最後に入力された数字が最下位の桁。
という条件で入力された数字を表現できる数式を答えよ。

例:
1回目:1を入力
2回目:2を入力
3回目:3を入力
結果:123
というのを数式で表現する。

まず普段の感覚で123という数字を先頭から解釈してみる。
3桁の数字の先頭の1という数字は
「1*100=100」
3桁の数字の2桁目の2という数字は
「2*10=20」
3桁の数字の3桁目の3という数字は
「3=3」
だから合計すると
「1*100+2*10+3」 

これは桁数に依存した方法。
普通は先頭から100の位、とか10の位って読み解く。
123は「ひゃくにじゅーさん」であって「さんにじゅーひゃく」じゃない。

じゃあ、桁数がわからなかったらどうする?
1が何の位かわからなかったら分解することが出来ない。
そこでだ、例を使って数式を書いてみると

1回目は1だから式にすると
「1」
2回目は2だから式にすると
「1*10+2」
3回目は3だから式にすると
「(1*10+2)*10+3」
ここで入力が途切れるので
「(1*10+2)*10+3=123」

この方式で行くと
4回目に4が入力されたら
「((1*10+2)*10+3)*10+4」
という風に繰り返していけば電卓のような入力が実現できる。

そもそもは
「1234」っていう文字を与えられたときに桁数を求めることなく数字に変換する
というプログラムを組んでいて思い至ったんだけどね。 

記事を見てコメントする | 友だちに紹介する

広告

2件のコメント so far
コメントをどうぞ

[いいですね]

コメント by creep

コメントの反応が遅くて申し訳ない。ちょっと背景説明をはしょってしまったのでわかりにくかったと思いますがC言語で引数の数字を取得して計算を行うという処理を作った際の話でした。(C言語では引数を文字としてしか取得することが出来なくてさらに文字列は一文字ごとに配列になってしまう)
ってさらなる混乱を生みそうですがそんな感じです!w

コメント by orifu




コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中



%d人のブロガーが「いいね」をつけました。