アプリ版:「スタンプのみでお礼する」機能のリリースについて

混乱してしまったので、質問します。

「8ビット=1バイト」「2の8乗で、1バイト」というのはわかったのですが、

1Kバイトを2の10乗とするのは、どうしてでしょうか?
2の8乗ずつの塊が、1バイトであるなら、
2の8乗X1000(K) になるのではないでしょうか?
でも本には1Kバイト=2の10乗=1024バイトになっています。
指数が8から10に、2増えている意味がわかりません…

パソコンと数学が得意な方、教えてください。よろしくお願いします。

A 回答 (5件)

ANo.4で十分ですが、一応補足。



1バイト=8ビット (違うこともある※1)
1KiByte=1024Byte (※2)
ですが、
これは便利だからそう決めたというだけです。

なので、これらの単位と「Nビットは2のN乗通りを表現できる」こととは別問題です。
これは10進記法で「N桁の10進数値は10のN乗通りを表現できる」といっているのと同じで
当たり前のことをいってるだけです。

2桁の10進数値が100通り(00~99)を表現できるからといって、
2桁が100桁になったりはしません。
同様に、8ビットが256ビットになったりはしません。


※1
1バイトが何ビットかは厳格に決まっているわけではなく、
1バイトが7ビットや9ビットであることもあります。
これは7ビットや9ビットを1まとまりと考えた方が便利な場面があるからです。
また、このように1バイトは8ビットでないこともあるため、
通信分野ではバイトではなくオクテットという単位を使ったりします。
1オクテットは8ビットと決まっています。

バイト - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4% …

※2
Kiは「キビ」と読み、1024を意味します。
kだと1000か1024かが文脈によって変わってしまうのであえて使いました。
詳しいことは以下のページを見てください。

2進接頭辞 - Wikipedia
http://ja.wikipedia.org/wiki/2%E9%80%B2%E6%8E%A5 …
    • good
    • 0

原則はこれだけ。


  「Nビット長であれば,2のN乗のパターンをそれぞれ区別できる」

------------------------------------------------------------
「2の8乗で、1バイト」という文は次のことを指しています。
  「8ビット長であれば,2の8乗のパターンをそれぞれ区別できる」

8ビット(1バイト)=2の8乗,という表記は間違いです。
ビット と パターンの数は まったく別の単位なのでイコールでは結べない。
  8ビット長,ならば,2の8乗 個のパターンに対応づけられる
  2の8乗 個のパターン,ならば,8ビット長に対応づけられる
という対応関係を言っているだけで,イコールで結ぶのは不正確です。

------------------------------------------------------------
「1Kバイトを2の10乗とする」という文は,おっしゃるとおり混乱をまねく下手な文です。この文は,バイトという文字を消してください。次のことを指しています。
  「10ビット長であれば,2の10乗のパターンをそれぞれ区別できる」
  「1Kという表記は,1000ではなく2の10乗(=1024)を指すものとする」

元々の文には正確にどう書かれていたのか質問者の方で提示することはできますか?
「1Kバイトを2の10乗バイトとする」なら正しい。
「1Kを2の10乗とする」でも正しい。
もしかすると質問者が片方だけに「バイト」の文字を付加して,間違って引用している可能性はありませんか。

------------------------------------------------------------
あと,ANo.1で登場した「18」の件は忘れていいでしょう。
1Kバイト,の「1K」と「バイト」とでぜんぜん意味が違っていて,
前者は1K(=1024)パターンを区別できるビット長,すなわち10ビット,
後者は1バイトのビット長,すなわち8ビット,
とでも言いたいのでしょうが,単位がぜんぜん合っていませんから。
普通に1Kバイトのビット長といえば 10+8 ではむろんなく,
1000×8ビット あるいは 1024×8ビットですよね。
    • good
    • 0

>「8ビット=1バイト」「2の8乗で、1バイト」というのはわかったのですが、



ならば2^8は256でしょ?つまり8bit=1Byte=256bit
(注:ビットはbit、バイトはByteで表示します)

では2^9は512で、2^10は1024ですね?
1000=1Kで表すとすれば2進の世界では1000はありませんから近似の1024で表現します。
1024bit=1Kbitと表します。

>2の8乗X1000(K) になるのではないでしょうか?

ここが間違っています。
ビット表現とバイト表現がごちゃ混ぜですね、

>2の8乗ずつの塊が、1バイトであるなら、

だから前述のとおり
2^8*2^10=2^(8+10)=2^18=202144bit

言い換えれば1バイトの1024倍
1Byte=256bit
1KByte=256*1024=202144bit=2^18=2^(8+10)=2^8*2^10
つまり
2の10乗Byte=1KByteですね。
    • good
    • 0

 K(キロ)が1000倍という意味があるからです。



http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%AD

 2進数の場合、1000倍にはならないので、それに近い値である1024=2^10が使われています。
 1B=8bとしているのは、16進法への変換を前提としている為です。2桁の16進法で表現できる最大の数が、2進法だと8桁となります。

 11111111(2)=15(10)=FF(16)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
無知ゆえに、回答して頂いた内容を理解するのに時間がかかってしまい、お礼が遅くなり、すみません。
2進数・16進数を勉強してやっとわかりました!
>1B=8bとしているのは、16進法への変換を前提としている為です。
納得しました!なぜ「8」?と思っていたので、本当にありがとうございます!

お礼日時:2008/08/06 23:20

あなたの単純なミスです。

単位をよく見てください。
1Kバイト=2の10乗=1024「ビット」
なら間違いです。
1Kバイト=2の「18」乗=「262144ビット」
になるからです。
でも
1Kバイト=2の10乗=1024「バイト」
これは、
1バイトを2の10乗倍すると1024「バイト」になりますよ。って書いているわけで、1バイトを2の10乗倍すると1024「ビット」になりますよ。と書かれているわけではありません。

あとコンピューターの世界では1K=1000ではありません。単位はどの学問でも同じではありません。PC(ソフト)の世界では「1Kバイト=1024バイト」です。

わかりましたか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
求めている単位が違う事は、わかりました!が・・・
1Kバイト=2の「18」乗 の、「18」はどこから出てきたのでしょうか…(数学的にかなり弱くてすみません)

PC(ソフト)の世界では「1Kバイト=1024バイト」
と、覚えなければならない数字ということですね!

お礼日時:2008/08/05 00:42

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