目次へ戻る

バイナリについて


原稿

Wikiだと途中保存とかを怠ってうっかり消えてしまうので、 Google Docsで書いてます。

Google Docs-バイナリについて

担当 te [#zd2e6d63]

名村

情報リンク集

執筆にあたって

ActionScript?では今までバイナリという概念は存在しませんでした。バイナリというコンピュータの基礎概念を扱えるようになることで、 ActionScript3.0で出来ることの幅が驚くほど広がりました。この章では、バイナリという概念の基礎を説明しつつ、バイナリを使ってできることをいくつか紹介していきます。

コンセプト

バイナリと言っても、そもそもバイナリとは何なのでしょうか。この後で紹介するいくつかのサンプルは、このバイナリの機能を活用して作成したものになります。そのため、まずはバイナリの基礎を簡単に解説してから先に進めることにします。バイナリについて十分に理解している自信のある方は、解説の項目は読み飛ばしてください。

バイナリ(Binary)を日本語で言うと「2進法」になります。この2進法は、数学の授業で学ぶ2進法と同じものです。生活で使う普通の数字は、10で桁が上がるので「10進法」になります。2進法は、2で桁があがります。そのため、2進法には、0と1しか数字が存在しないのです。

10進法と2進法の対応表

10進法2進法
00
11
210
311
4100
5101
6110
7111
81000
91001
101010

では、なぜ10進法ではなく、わざわざ日常では使わない2進法がここで出てくるのでしょうか。その理由は、コンピュータの仕組みにあります。コンピュータは、電気によって制御される機械です。コンピュータの中にあるたくさんの部品は、お互いに電気をやりとりすることで、情報の受け渡しを行い、動いています。コンピュータの部品は、あらゆる情報を電気が流れているか、流れていないか、の2つの状態で表現しなければなりません。つまり、2進法の「0」と「1」だけの世界は、コンピュータの電気が「流れている」「流れていない」の2つしかない世界と同じなのです。このため、コンピュータの世界ではよく2進法が使われ、「バイナリ」がよく出てくるのです。

コンピュータの世界がバイナリで出来ているため、コンピュータ上のあらゆるデータは、バイナリで成り立っています。たとえば「3469」という10進法の数字があったとしましょう。この数字も、コンピュータの中ではバイナリとして表現されます。「ああああ」という平仮名の文字も、コンピュータの中では、0と1だけのバイナリで成り立っています。

ここで、「ビット(bit)」と「バイト(byte)」について解説しておきます。コンピュータやゲーム機などの話題で、「32ビット」「64ビット」という言葉を聞くことはないでしょうか。このビットとは、まさしくバイナリの表現の単位のことなのです。ビットとは、バイナリの一番小さな表現で、1桁分のデータ、つまり「0」か「1」かの1桁分のことです。32ビットと言うと、「0」か「1」が32桁並ぶことになります。たとえば、「10110010」や「11011100」のような2進数は8桁あるので、8ビットになります。さらに、8桁のビットのことを1バイトと言います。よくハードディスクで100メガバイト、1ギガバイトと言う言葉を聞くと思いますが、そのバイトと同じものになります。したがって、1バイトには、8個の「0」「1」が保存できることになります。1メガバイトは、およそ1,048,576バイトになり、1,048,576バイトは、8,388,608ビットになります。つまり1メガバイトの中には、 8,388,608個の「0」と「1」を保存することができるのです。

ActionScript2.0までは、このコンピュータの基礎であるバイナリを扱うことはできませんでした。しかし、ActionScript3.0になってバイナリを扱うことができるようになり、作成するアプリケーションの幅が途端に広がりました。次項では、バイナリによって使えるようになったサンプルをいくつか紹介します。

AS3のメリット

ActionScript3.0のメリットとしては、バイナリが扱えることそのものになります。ActionScript2.0までは、バイナリを扱うことができませんでした。

サンプル紹介

MSNメッセンジャーと通信

ZIPファイルの解析

暗号化とダイジェスト

SSHクライアント

NTPクライアント

画像エンコーダ

この章のまとめ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-12 (金) 15:41:47 (208d)