アカウント名:
パスワード:
コンピュータサイエンスの世界では2進数、8進数、16進数との親和性がとても良い。初期のCPUにはヘンテコなbit数のレジスタ等を持った切りの悪いものもありましたが淘汰されました。いまはほぼ以下のような感じでほぼ統一してbyte、word等々を実装されている。 1byte = 8bit 1word = 2byte = 16bit 1long word = 2word = 4byte = 32bit 1quad word = 4word = 8byte = 64bit上記の様にを2進数、8進数、16進数と親和性がとても良いのは察しがつきますか?で、このまま数をデカクして行くと1KiB=1024Byteとした方が数字として扱いやすいのです。 1024(10進数) = 400(16進数) = 2000(8進数)
人が10進数を好んで使ってきたのはたぶん指の数でしょうね、でも10進数って数学的に見ると意外と切が悪くて扱いづらいですよね。人間の片手の指の数が4本か8本だったら良かったのにwww
「指」で思い出したのですが,2進法と親和性が高い「デジタル [wikipedia.org]」という単語は「ラテン語の「指 (digitus)」」が由来だそうです。最初聞いたときはびっくりしました。
数・単位は基本的に人間の人体由来が多いですね。
> 1word = 2byte = 16bit> 1long word = 2word = 4byte = 32bit> 1quad word = 4word = 8byte = 64bit
今どきのプロセッサだと 1 half word = 2 bytes = 16 bits 1 word = 4 bytes = 32 bits 1 double word = 8 bytes = 64 bitsってのが多いような。ARMとかMIPSとかSPARCとか。
> 人が10進数を好んで使ってきたのはたぶん指の数でしょうね、でも10進数って数学的に見ると意外と切が悪くて扱いづらいですよね。
数学的にキリが悪い例を具体的に教えてください。
#個人的には片手6本の両手で12本が良かったんじゃないかと思う。#2,3,4で割れるし。
> 数学的にキリが悪い例を具体的に教えてください。
1つの”○○進数”内で完結している話であれば具合が悪くない。ところがA進数からB進数、C進数と進数を変換する場合に、2のN乗”進数”どおしでは親和性がとても高いのは理解できますか?
そしてコンプピュータの世界では基本2進数なのですがコレは人間から見ると大きな数を扱いにくいモノです。先に挙げた例に追加して1024(10進数)を2進数で表すと10000000000(2進数)となり桁が多くて人間から見ると扱い辛いですよね。そこで2進数と親和性の高い8進数、16進数に置き換えて扱うことが行なわれています。2進⇔16進変換は慣れると簡単なことは使ったことがある人には分かるはずです。そしてコンプピュータの世界では基本2進数、16進数を10進数に変更するのは結構大変です。
数学的にキリが悪いというのは他の進数との親和性が低いことを意味します。
それは「数学的」にではなく「(電子)コンピュータ的」の誤解じゃないかな?
算術コストはネイピア数を底とする記述法が最小だと知られているから、e進数が理想となる。それに近い整数は2か3だけど、e≒2.73より3の三進数が数学的には最もコストが小さい。
ただ、歴史的な理由でコンピュータは2進数が使われており、3進数のアルゴリズムを再開発するよりも、そのまま2進法を利用しているって言うのが実際のところ。
7進数(曜日)、12進数(月・十二支)、60進数(時間・暦)なんかは2進数と変換の親和性低いから、「2進数が数学的に他の進数との親和性が高い」というのは飛躍しすぎ。例示した4,8,16...はいずれも2^n進数だから、親和性が高いと言うより、2進数の拡張と捉えた方が自然だと思う。
s/どおし/どうし/
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
なぜ1024なのか (スコア:2)
コンピュータサイエンスの世界では2進数、8進数、16進数との親和性がとても良い。
初期のCPUにはヘンテコなbit数のレジスタ等を持った切りの悪いものもありましたが淘汰されました。
いまはほぼ以下のような感じでほぼ統一してbyte、word等々を実装されている。
1byte = 8bit
1word = 2byte = 16bit
1long word = 2word = 4byte = 32bit
1quad word = 4word = 8byte = 64bit
上記の様にを2進数、8進数、16進数と親和性がとても良いのは察しがつきますか?
で、このまま数をデカクして行くと1KiB=1024Byteとした方が数字として扱いやすいのです。
1024(10進数) = 400(16進数) = 2000(8進数)
人が10進数を好んで使ってきたのはたぶん指の数でしょうね、でも10進数って数学的に見ると意外と切が悪くて扱いづらいですよね。
人間の片手の指の数が4本か8本だったら良かったのにwww
Re:なぜ1024なのか (スコア:1)
「指」で思い出したのですが,2進法と親和性が高い「デジタル [wikipedia.org]」という単語は「ラテン語の「指 (digitus)」」が由来だそうです。最初聞いたときはびっくりしました。
数・単位は基本的に人間の人体由来が多いですね。
Re:なぜ1024なのか (スコア:1)
> 1word = 2byte = 16bit
> 1long word = 2word = 4byte = 32bit
> 1quad word = 4word = 8byte = 64bit
今どきのプロセッサだと
1 half word = 2 bytes = 16 bits
1 word = 4 bytes = 32 bits
1 double word = 8 bytes = 64 bits
ってのが多いような。ARMとかMIPSとかSPARCとか。
Re: (スコア:0)
> 人が10進数を好んで使ってきたのはたぶん指の数でしょうね、でも10進数って数学的に見ると意外と切が悪くて扱いづらいですよね。
数学的にキリが悪い例を具体的に教えてください。
#個人的には片手6本の両手で12本が良かったんじゃないかと思う。
#2,3,4で割れるし。
Re:なぜ1024なのか (スコア:2)
> 数学的にキリが悪い例を具体的に教えてください。
1つの”○○進数”内で完結している話であれば具合が悪くない。
ところがA進数からB進数、C進数と進数を変換する場合に、2のN乗”進数”どおしでは親和性がとても高いのは理解できますか?
そしてコンプピュータの世界では基本2進数なのですがコレは人間から見ると大きな数を扱いにくいモノです。
先に挙げた例に追加して1024(10進数)を2進数で表すと10000000000(2進数)となり桁が多くて人間から見ると扱い辛いですよね。
そこで2進数と親和性の高い8進数、16進数に置き換えて扱うことが行なわれています。
2進⇔16進変換は慣れると簡単なことは使ったことがある人には分かるはずです。
そしてコンプピュータの世界では基本2進数、16進数を10進数に変更するのは結構大変です。
数学的にキリが悪いというのは他の進数との親和性が低いことを意味します。
Re: (スコア:0)
それは「数学的」にではなく「(電子)コンピュータ的」の誤解じゃないかな?
算術コストはネイピア数を底とする記述法が最小だと知られているから、e進数が理想となる。それに近い整数は2か3だけど、e≒2.73より3の三進数が数学的には最もコストが小さい。
ただ、歴史的な理由でコンピュータは2進数が使われており、3進数のアルゴリズムを再開発するよりも、そのまま2進法を利用しているって言うのが実際のところ。
7進数(曜日)、12進数(月・十二支)、60進数(時間・暦)なんかは2進数と変換の親和性低いから、「2進数が数学的に他の進数との親和性が高い」というのは飛躍しすぎ。例示した4,8,16...はいずれも2^n進数だから、親和性が高いと言うより、2進数の拡張と捉えた方が自然だと思う。
Re:Typo (スコア:0)
s/どおし/どうし/
Re: (スコア:0)
Re:なぜ1024なのか (スコア:1)
彼等なら何十本でも識別できそうですので。
# 大事な機械は「触手厳禁」
Re: (スコア:0)
片手で伝達できて便利なのでしょう。
親指はキャリーフラグですよ。
Re:なぜ1024なのか (スコア:2)