世の中には○進数というものがいろいろありますが、
理論的に何進数がベストなんでしょうか?
計算機にとっては2進数なんでしょうが、人間にとって
という点でお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (11件中11~11件)

 ベストというものは特にないんじゃないかと思います。

人間の手の指が両手で10本だから我々は10進法に慣れているということになっていますが、こじつければ「分秒が60進法で時間が12進法または24進法」なんてことも平気でやっちゃっていますし。さらに、古代マヤ文明では20進法、バビロニアでは60進法を使用していたとかも聞きます。要は慣れの問題じゃないかなと思います。
 ちょっと観点を変えてみると、本来はn進数を表現するためにはn個の異なる記号が必要になりますので、あんまりnが多いのも記号を覚えるのが面倒なので考えものですね。ということで10進法あたりはいい線かもしれません。

この回答への補足

確かに時間は60進法と12進法(24進法)が兼用されていますけど、時間という概念の中では、四則演算でも限られてきますよね・・・。だからこそ使えているような気もするのですが・・・。
TCMさんのお答えの後半部分が最適な○進法への答えにつながるような気がするのですが、なかなかドンピシャな答えはないみたいですね・・・。

補足日時:2001/01/08 23:42
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q何進法が便利!?

よく、10進法は慣習で使ってるだけで
本当は12進法が合理的だって言われるし
デジタル式コンピーターで16進法もいいし
時間関係→12進法、30,12*n進法(n=30)の混合型いいね
測度論的計量関係→12
その他→12
だから、状況によって何進法か使い分けたいけど
もっとザックバランでいいから、
何進法が便利で合理的で推奨すべきと考えますか
できれば理由なども説明お願いします
更に、そういうことを推奨している機関があれば教えて下さい

Aベストアンサー

以前に「何進数が理論的にベスト?」という質問
http://oshiete1.goo.ne.jp/kotaeru.php3?q=25654
がありました.
ご参考までに.

Qコンピューターで2進法が採用されている理由を教えてください

 2進法がコンピューターで使われているのはなぜですか?

Aベストアンサー

 
  初期の真空管で造った電子計算機では、二進法ではなく、十進法などを使っていたものでがありました。しかし、二進法が非常に有利で便利なので、二進法を使うようになったのです。
 
  理由:

  1)信号が、1と0だけでよい。十進法だと、信号が十個必要で、どの数かを判断する回路が必要になる。しかし、二進法だと、信号があるか、ないかの区別だけで非常に簡単である。
 
  2)これはコンピュータの心臓のCPUの設計に関係することですが、基本的には、CPUはレジスターという一種の計算機・勘定装置を使っています。これはたいへん原理は簡単なもので、簡単な計算を行います。このレジスターで、二進法を使うと非常に簡単に足し算とかができるし、また引き算、かけ算なども、少し工夫すると計算できるのです。
 
  例えば、111は二進法表現で7ですが、これにまた7を足し算するのは、
  111+111で、1+1=0(繰り上がり1) 1+0=1 0+1=1 0+0=0 という四つの計算規則だけでどんな数字でも、桁上がりだけ工夫すると計算できるのです。また引き算やかけ算も簡単に行えます。
 
  3)あるいは、フリップ・フロップ回路という面白く単純で、しかし重要な計算回路があるのですが、これは二進法での回路なのです。 

  4)コンピュータは大きな記憶装置を使うのです。この記憶装置は、あるかないか、つまり、1か0で記録すると、非常に簡単なのです。記録も速いし、読みとりも速いのです。
 
  こう言った理由で、二進法つまり1と0の信号で、コンピュータのなかでは計算や記録や記憶を処理しているのです。これを、5進法だとか、10進法にすると、たいへん複雑になるのです。
 
  人間はしかし二進法ではどんな数がすぐ分かりませんから、入力する時は十進法で、途中で二進法に変え、また、出力する時も、二進法だったのを、人間に分かるように十進法にしているのです。
 

 
  初期の真空管で造った電子計算機では、二進法ではなく、十進法などを使っていたものでがありました。しかし、二進法が非常に有利で便利なので、二進法を使うようになったのです。
 
  理由:

  1)信号が、1と0だけでよい。十進法だと、信号が十個必要で、どの数かを判断する回路が必要になる。しかし、二進法だと、信号があるか、ないかの区別だけで非常に簡単である。
 
  2)これはコンピュータの心臓のCPUの設計に関係することですが、基本的には、CPUはレジスターという一...続きを読む

Q素数の研究を2進法の表記で行う利点はありますか

素数を各桁の偶数と奇数の並び方などから何か出てこないかということですが、10進法より2進法のほうが規則のようなものが見つけやすいかとも考えています。素数を研究している人は表記などは問題にしないのでしょうか。

Aベストアンサー

#1、2です。素早いお礼の方もありがとうございます。

「規則のようなものを見つける」 というご質問の最も近い回答を思いつきましたので補足します。


まずですね、
規則そのものはまだ見つかっていないです。あくまでも見つかっているのは
規則のようなもの です。
10進数ですら、「素数にどういう規則があるか」はわからないので、
2進数で「まだ」見つかっていないのは明らかですね。
だって、逆に言えば、2進数で素数についての規則が見つかっていれば、それを10進数に置き換えて、
2のなんとか乗の~ と言えるはず
ですから。
素数の規則を発見すれば、正に「数学界のノーベル賞」ものでしょう。


ただ、過去何千年間も、素数の規則については、研究が重ねられているようですよ。
既にウィキペディアの「素数」のページはご覧になっていることと思います。
双子素数、という予想は私にもわかりやすかったです。11 と 13、857 と 859 などですね。
12±1、858±1 と表せることが美しいです(ちなみに 858=2x3x143)。

で、私が示唆するのは、
   「コンピューターはどうやって、暫定最大の素数を割り出しているのだろう」
   ということを考えれば(資料を見つければ)、ディジタルで素数を研究するメリットも自ずと
   見つかるのではないか
ということです。
   メルセンヌ素数: 2^n - 1
だけ調べているんでしょうね。

---------------
2013年12月現在で知られている最大の素数は、2013年1月に発見された、現在分かっている中で48番目のメルセンヌ素数 2の57885161乗 - 1 であり、
十進法で表記したときの桁数は 1742万5170桁 に及ぶ。
-----------------

2の57885161乗 - 1 の次は
2の57885162乗 - 1
2の57885163乗 - 1
と順番に調べていき、その間はすっ飛ばしているのでしょう。
   「最大の」素数を探すのが目的であり、全ての素数を求めるのは目的ではない
からですね。

ただ、2倍2倍で調べる、ということは、理にかなっていると感じます。
例えば我々が マニュアルで 素数を探すとしますね。
「ある数」1百万とするとき、2~1000000 の間の素数を一所懸命、「ある数より小さい数で割れるかどうか」という方法で探します。
ただ、ご存知の通り、「ある数」以下の全ての自然数で割り算を試す必要はないわけです。
  2で割れなかったら、4でも割れないし6でも割れないし、
  3で割れなかったら、6でも割れないし9でも割れないし、
  素数で割れるかどうか (「ある数」以下の素数を因数に持つかどうか)
を調べれば充分ですし、
  2x500000
  5x200000
がわかれば、
  500000x2
  200000x5
はもう調べる必要はありません。つまり、
  √1000000、1000まで調べれば充分
なのです。
  2~1000 の間の素数
だったら、まだ 手計算できそうな気がしますね。

メルセンヌ素数 2の57885161乗 - 1 の予言も、これに近いのではないでしょうか?
 1111111 が2の7乗-1 です。7は、7ビットです。
11111111 が2の8乗-1 です。8は、8ビットです。

ここから先は、どうやって
11111111 が
      11 で割れない かつ
     111 で割れない かつ
    1111 で割れない かつ
   11111 で割れない かつ
  111111 で割れない かつ
 1111111 で割れない かどうか
を計算するのか、詳しいことはわかりません。
ただ、2進数の割り算の方法については、
  「桁をずらしながら引き算をすれば、割り算ができます」

  http://ednjapan.com/edn/articles/1307/16/news002_2.html
に記してあります。これぞ正に、
  素数の研究を2進法の表記で行う利点
じゃないですか?

先に言った通り、
11111111 が素数であることが仮に示されたとしても、
1111111 ~ 11111111 の間に他の素数がないということではない
ですよ。
ただ、0と1、つまり、白と黒の模様を眺めていると、何か規則性が見つかってきそうな妄想・空想・美想(?)にとらわれますよね。
まるでダ・ヴィンチ・コードのような荒唐無稽な話ですが、素数を2進数で書き並べて、適当な所で改行してポスター用紙一面に埋め尽くすと、モナ・リザのような絵画が現れるかも知れません。
   エラトステネスの篩(ふるい)もある意味絵画だ
と私は感じますからね。


数学を研究している人は、表記を私たち以上に気にすると思いますよ。
例えば 対数で考えたり。指数で考えたり。
一般人は自然数を 1、2、3、 という序列で捉えますが、
素数など自然数全体を考えている専門家は 1、10、100、 (2進数ではなく一十百)という序列で捉えている
かも知れません。200と2000は専門家にとっては「かなり似ている数」なのかな、と勝手に想像します。

で、その拡張で、log など以外に、
  「素数を考えるとき専用の関数」 を定義したりする
ことも予想できます。その中に、底2の指数 が入っていても不思議はない のではないでしょうか。
2というのは、1と1を足す、ということを考えれば、まるで O と O2 (酸素原子と分子)のように、基本単位の1つのようにも見えますし。
全て素人(私)の戯れ言ですよ!

#1、2です。素早いお礼の方もありがとうございます。

「規則のようなものを見つける」 というご質問の最も近い回答を思いつきましたので補足します。


まずですね、
規則そのものはまだ見つかっていないです。あくまでも見つかっているのは
規則のようなもの です。
10進数ですら、「素数にどういう規則があるか」はわからないので、
2進数で「まだ」見つかっていないのは明らかですね。
だって、逆に言えば、2進数で素数についての規則が見つかっていれば、それを10進数に置き換えて、
2のなんとか...続きを読む

Q十二進法のメリット

数学オンチです。

 日頃から不思議に思っているのですが、数学的にみて十二進法にメリットはあるのでしょうか?わざわざ十二進法を度量衡に用いる意味がわかりません。またなぜ時間は十二進法が採用されているのですか?

 これを知らずには数学オンチに拍車がかかりそうです。よろしくお願いします。

Aベストアンサー

ナリユキじゃないかな?
伝統や文化の成立過程は、偶然の積み重ねです。
十二進法のほうが十進法より合理的であるような
数学的理由は特に無いと思います。
数学の問題と考えるより、
文化人類学上の問題と考えたほうが、実りがありそうです。

Q「ご連絡いたします」は敬語として正しい?

連絡するのは、自分なのだから、「ご」を付けるのは
おかしいのではないか、と思うのですが。
「ご連絡いたします。」「ご報告します。」
ていうのは正しい敬語なのでしょうか?

Aベストアンサー

「お(ご)~する(いたす)」は、自分側の動作をへりくだる謙譲語です。
「ご連絡致します」も「ご報告致します」も、正しいです。

文法上は参考URLをご覧ください。

参考URL:http://www.nihongokyoshi.co.jp/manbou_data/a5524170.html

QC言語 再帰処理のメリットとデメリット

最近、C言語の関数にも再帰定義ができるということを初めて知りました。
そこで聞きたいのですが、再帰処理のメリット・デメリットは何でしょうか?
思いついたものとしては

メリット … 簡単に表記できる
デメリット … 無限ループが発生する可能性あり

でしょうか。
また、全計算が終わるまでに、途中の演算結果を保持しなければならないので、
メモリを無駄遣いしそうな気もします。

Aベストアンサー

「メリット … 簡単に表記できる」

これはケースバイケースなのではないでしょうか。例えば配列の要素の和を求めるなんてのは、普通にループで書いた方が簡単です。一方、フィボナッチ数列を求めるなんてのは(教科書的な例で恐縮です。私が書いた中では、ある種の文法解析)再帰で書いた方が簡単でキレイですよね。

「デメリット … 無限ループが発生する可能性」

これは単に、繰り返しの終了条件の書き方の問題ではないでしょうか。普通の for などのループでも終了条件を間違えれば、同じだと思います。ただ再帰処理だと、終了条件が普通の if 文だったりするので、見た目が少し分かり難いという程度でしょう。

一部のプログラミング言語、例えば lisp とか prolog、では再帰処理をコンパイラが普通にループの繰り返しに変換して処理速度を上げています(ただし可能な場合のみ、全ての再帰処理をループに変換できない)。まあ prolog だと for のような繰り返しがなかったりする、という事情もあるのですが。

しかし、C ではそれをやらない約束になっているようです。ということで、再帰処理だとスタックが繰り返しの回数に比例して延びてしまいますので、無限ループは書く事ができませんし、繰り返し回数が多いとスタックが溢れたりします。もちろん、for などの普通の繰り返しの方が、再帰呼び出しよりも速いです(だから一部の言語では再帰をループに変換する)。

ということで、デメリットとしては、「遅い、メモリを喰う」という事になるかと思います。

No.1 さんのご回答にあるように、スレッドを細かい粒度にして並列度を上げるために、ループの繰り返しの単位で並列に処理しようとする、つまり、再帰呼び出しの関数レベルでスレッドにしたくなる気持ちは分かりますし、そういう研究は昔から多くあります。

しかしながら、実際問題、こうして並列度を上げてもなかなか速くならないようです。それよりも大きな配列を分割して並列化する方が、今の段階だと、ずっと簡単に速くなるようです。ただし、近い(?)将来、マルチコアが 100 とかいうレベルになると状況が変わるかもしれません。

「メリット … 簡単に表記できる」

これはケースバイケースなのではないでしょうか。例えば配列の要素の和を求めるなんてのは、普通にループで書いた方が簡単です。一方、フィボナッチ数列を求めるなんてのは(教科書的な例で恐縮です。私が書いた中では、ある種の文法解析)再帰で書いた方が簡単でキレイですよね。

「デメリット … 無限ループが発生する可能性」

これは単に、繰り返しの終了条件の書き方の問題ではないでしょうか。普通の for などのループでも終了条件を間違えれば、同じだと思います。...続きを読む


人気Q&Aランキング