ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

0ビットで表現できる状態は何通り?

またまた、それなりに久々の更新ですね…。

最近は更新がほとんど無く、ブログがつまらなくなってしまっているわけですが、
まあ、アクセス数はいつも一定数を稼いでいるようでありがたいです。

最近、このブログを閲覧し始めた読者の方々は、当ブログには昔に書いた記事がたくさんあるので、
それを見ながら更新を気長に待ってくれたらありがたいな~、なんて思っております(笑)




さて、いきなりですがビットの話。

nビットあれば2n通りの状態を表現することが可能です。


これはみなさん、ご存知だと思います。

分からないという方は申し訳ないですが、記事を読みづらいと思います。



ではでは、nビットで表現可能な状態は何通りか、テーブル形式で書いていきましょう。

5 bit … 25 … 32通り
4 bit … 24 … 16通り
3 bit … 23 … 8通り
2 bit … 22 … 4通り
1 bit … 21 … 2通り

という感じになります。


しかし、そこで思ったのですが、

0 bit … 20 … 1通り


こういう場合、違和感があります。

n = 0 のときって、上記の「nビットあれば2n通りの状態を表現可能」という法則に当てはめて良いものなのですかね…。


言葉にして言えば、
「0ビットあれば1通りの状態を表現可能」となります。

しかし、「0ビットがある」とは要するにビットが存在していないということですし、
ビットが存在していないのに状態を表現しているというのはどういうことなのか疑問なのです。




そこで二つの解釈を考えました。


1つ目は、 n = 0 の場合、上記の法則は適用されないという解釈です。
ビットが存在していないのですから。

また、1通りの状態というのはそもそも情報として価値がないと捉えます。

2通り以上の状態を持てば、どの状態になったのかを表現する情報には価値が生まれますが、
1通りしかないと、情報として表す必要性がないので、

「1通り」という状態を考えてはいけないというわけです。


この解釈は、下記する2つ目の解釈よりも厳密で学問的、つまり情報理論的になっているかなと思います。



2つ目の解釈は、「ビットが存在しなくても表現できる状態は1通り」という考え方です。

いや、情報を符号化するときって、ビットで何を表すのかを最初に定義するじゃないですか。

数値でもいいですし、色とか、音とか…。

そこで、数値だったら0、色だったら黒、音だったら“10kHzの正弦波1秒分”とか、
そういったデフォルト値のようなものを表すのは0ビットでも可能、といった考え方でもいけるのかなと思います。

身近な例でいうと、VB.NETのメソッドの省略可能引数です。

引数を省略したというのは、引数を0ビットにしたと考えて、でもメソッド側で定義したデフォルト値が入るじゃないですか。

つまり、1通りというのはデフォルト値のようなものを意味していて、ビットは存在しなくても情報は表せるという解釈です。




書きたいことをあまり整理せずに書いたので、意味不明な文章になってしまったかもしれませんが、

まあ、久しぶりの更新として今回は“0ビット”の話をしました。


次の更新は…いつになりますかね~。

tag:

コメント

ビット数は「仕切りの乗数」と思えば良いかと~

仕切りが0個でも、自分自身は一通りに判別できますよね

しかし、ほぼ完璧な説明ありがとうございます(’ー’ )

私はここまできっちり書けません。。。

膨らむフトンは、エアーバッグの技術がありますから、安全性という点では安定するかもしれませんねー

いずれにせよ目覚まし機能をベット等のプラグインユニット化して、USBなどのように標準仕様にしてもらえると、個人的にはサイコーです…好みの反映というのもありますし、とにかくほんと、起きられない、、

  • 2013/11/18(月) 19:26:16 |
  • URL |
  • ぽけもんYZ #-
  • [ 編集 ]

Re: ぽけもんYZ

なにかをn枚の仕切りで分けたら、2^n個ではなくn+1個に分かれますから、ちょっと違うのではないでしょうか…。

にしても、情報理論において0ビットはどのように解釈しているんですかね~。
この記事に書いたのは、あくまでも私の解釈にすぎないのです。

布団にUSBですか…(笑)
未来は布団もスマート化ですね。

USBから書き込むプログラマブル・ベッドとか…。

情報の講義も受けた記憶があるんですが、
記憶があやふやです。

0=情報なしです。
なので、0bitの時は、何も表さない。
(情報として無価値と習った記憶が)
デフォルトバリュー=すでに存在するので1ビットですよね。
なぜなら、デフォルトがあるなしとなりますから。

例えば、生物の性がオスとメスに完全に分けれるとします。
この場合、どちらかになりますので、1bitですよね。
これが、例えば世界にオスしかいない場合は、情報量0です。
その場合、おそらく 性なんていう言葉も存在しないと思いますから。
性=無となりますよね。
そういう概念が存在しない。

まちがってたら、ごめんなさい。

  • 2013/11/19(火) 00:00:20 |
  • URL |
  • 通りすがり #EBUSheBA
  • [ 編集 ]

Re: 通りすがり

> 0=情報なしです。
> なので、0bitの時は、何も表さない。
> (情報として無価値と習った記憶が)

これは記事中の1つ目の解釈と似ていますね。
「変化するもの(2通り以上の状態を持つもの)であってはじめて、情報である」という考え方。

昔、買った「情報はなぜビットなのか」という書籍にも、そう書いてありました。
こちらが情報理論における考え方なんだと思います。

「0ビットのときデフォルト値になる」については、“ある”, “なし”とかじゃなく、
何らかの値を要するプログラムにおいて、値が指定されていなかったらデフォルト値を使うようにするという、
開発における実用的な解釈として書きました。

ただ、やはり情報理論という一つの学問で考えたときは、前者の解釈のほうがあっているのかな、と思います。

開発なら、多分。
nullの概念が近いと思います。

  • 2013/11/19(火) 18:19:55 |
  • URL |
  • 通りすがり #EBUSheBA
  • [ 編集 ]

Re: 通りすがり

何の話なのかにもよりますが、私は

// 変数argとdefaultを宣言済み
int value;
if(arg != null) value = arg;
else value = default;

みたいなプログラムを書く、というつもりで書いたので、nullとは違いますね…。

nullは言語ごとに扱いが違ったりしてややこしいですよね~。

VB.NETのNothingはC#のnullと同等だと思っていたのですが、
値型の変数にNothingをセットしたら、その型の既定値になるみたいです。
Dim int As Integer = Nothing ' intは 0

うんと
int? と宣言して、
nullを使いたいときありますよね。
そういう時のnullはbit0の概念に近いとおもいますが。。。


vbだと、
01.Dim i As Nullable(Of Int32)
こんな感じで扱えるのかな。

  • 2013/11/19(火) 20:04:55 |
  • URL |
  • 通りすがり #EBUSheBA
  • [ 編集 ]

Re: 通りすがり

まぁ、そういう場合はnullに近いですね。
私が言いたかったのはそういう場合じゃないですけど…。

ただ、nullは“どこも参照していない”という意味が一番適しているかと思いますので、
0ビットに近いかどうかは入り組んだ議論が必要かもしれません。

にしても、VB.NETのNullableは言語レベルでサポートされていないのでアレですね…。

>しかし、「0ビットがある」とは要するにビットが存在していないということですし、
>ビットが存在していないのに状態を表現しているというのはどういうことなのか疑問なのです。

0 = 存在しない値?
少しおかしいと思いますよ。

例えば・・・、
気温 0℃
何も感じませんか?いえ、少なくとも"寒い"と感じますよね。
0とは確かに存在しています、"無"ではありません。

配列だって0番目から始まりますね。(これは余計かも)

0個のパンがあります = "パンは"存在しません。
しかし0が存在しないわけではないでしょう。
この場合の0とは数値であり、この場合はパンの数値を表していますね。

つまり0とは0という表現が可能です。
存在しないわけではありませんよ。

0という情報があります。

だらだらと書きました、これにて失礼いたします。

あと思ったのですが、伏せコメントができないのならば「管理者にだけ表示を許可する」の項目は消したほうがいいと思います。<input type="hidden" />でもいいですし。

  • 2013/11/20(水) 17:37:19 |
  • URL |
  • funcHM #-
  • [ 編集 ]

「there is ~」で「ある」はナンセンス!

連続で、すいません。

「there is ~」で「ある」はナンセンス! という記事を見て気づいたことがあるので。

Thereについて考えたんですが、たしかに意味は have が適しているなぁと思いました。

それで気づいたことというのは There って単数か複数かあとに続く文で変わりますよね。 それを考えると thereって代名詞とかではないのか?と思いました(笑)例えば a boy が続くとすると There is になりますし some boysにすると There are になりますし。こうするとやはり There の文の主語は実はThereじゃないのかも、あとに続く語句なのかも。
There is a boy. → 「(一人の)少年がいる。」
A boy stays. → 「少年は居る。」
こうしてみるとthereって客感的表現なのかも。
暇があったら調べてみよう。

ではでは何度も失礼しました。

  • 2013/11/20(水) 18:38:13 |
  • URL |
  • funcHM #-
  • [ 編集 ]

Re: funcHM

なかなか興味深い話題です。

私は結局「0」というのは、数を計算しやすくするための道具として定義しただけで、
計算しやすさを考えなければ「0」なんてものは必要ないのではないかと考えています。

パンの個数を言うときも、パンが存在しないときだけ「パンがありません」と言うのは面倒です。
なによりも計算上において面倒です。
たとえば、1つ80円のパンをn個買ったとき、合計金額はいくらかという問題、
「0」が存在するなら n = 0 とすることが可能になり、計算式は 80 × n (円) と簡単に式を書けます。

もし「0」がなければ、パンを買っていないという状態を含めこの計算式を成り立たせることは不可です。
無論、「パンを買っていないのでこの計算式は適用されない」とすることで対処できるでしょう。
しかし、やはり「0」という数値があったほうが、一貫した計算式で“パンを買っていない”という状態が表せるので便利なわけです。

ただ、それは便利なだけであって、「0」は存在しなくても数学は上手いことなっていたと思います。
”無い“状態は、無いのですから数として見なさなければいいだけです。

そのような「0」が存在していない世界で「パンが0個あります」なんて発言をしたら、
「お前バカかよw パンは無いんだから“ある”なんて言わねえだろww」みたいに変態扱いされるはずです。

長くなりましたが、「0」というものは「存在しない」ものを数値として定義できたら便利だから誕生したもので、
その本質は決してfuncHMさんが書いていた「0」が存在するなどの深いものではなく、ただの存在しない物にすぎないと私は思っています。

私はですけどね。


「管理者にだけ表示を許可する」を消したほうがいいと言うのはその通りですが、
HTMLに対する苦手意識が半端ないので、いじっていませんね…。
今度、ソースを見てみます。

Re: 「there is ~」で「ある」はナンセンス!

たしかに、Thereという単語では単数形か複数形か分からず、be動詞の目的語によって決まりますね。

もしかしたら、単数形のthereと、複数形のthereとで2つの単語があって、自然に使い分けているのかもしれない…。

まぁただ、自然言語は明確な定義をしてもコロコロ変わっていって、
明確な定義なんてやめたほうがいいのかなぁ、なんて思ったりしてます…(笑)

アクセス総数40000超していますね!おめでとうございます。

・・・って記事に関係ないコメントでした、すいません。

  • 2013/11/25(月) 18:22:38 |
  • URL |
  • funcHM #-
  • [ 編集 ]

Re: funcHM

ありがとうございます!
記事にして書こうと思っています。
これからもよろしくお願いします。

コメントの投稿

トラックバック

トラックバック URL
http://cyberboy6.blog.fc2.com/tb.php/305-4844cd86
この記事にトラックバックする(FC2ブログユーザー)

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。