バイナリ

二進法、およびデータを二進数で符号化した状態、ファイル形式

バイナリバイナリー (binary) とは、算術的な用法では二進法のことであるが、情報技術においては、コンピュータが直接的に処理するために2進数で表現されるデータ(バイナリデータ)のことを指して用いられる。

ウィキペディアのFaviconヘックスダンプ。先頭列は行番号、「*」は同じ内容の行の反復を示している。1行あたり16バイトであり、318バイトのデータである。

概要編集

バイナリは、コンピュータが直接的に処理することができるようにフォーマットされているため、人間が読んでもただちに意味を理解することはできない。バイナリエディタを用いると、バイナリファイルの内容を16進数で表示させ、編集することができる。

バイナリに対する用語として、テキストが用いられる[1]。テキストは、テキストエディタに読み込ませることにより、人間が読んで内容を理解できるデータである。

バイナリの例編集

たとえば画像ファイルや音声ファイル、圧縮されたファイルなどはバイナリである。バイナリファイルの中にはファイルの先頭にメタ情報(ヘッダ)を持っているものがある。たとえばGIFファイルは複数の画像を持つことができ、ファイルの先頭でそれぞれの画像を区別する情報が記述されている。そのようなメタ情報を持たないファイルはフラットバイナリファイルと呼ばれる。コンピュータプログラム関係では、テキストであるソースコードとの対比からコンパイルされたコード(オブジェクトファイル実行ファイルなど。またそのような機械語(ネイティブバイナリ)に限らず、WebAssemblyJavaなどのバイトコード類なども含む)のファイル等を指してバイナリと呼ばれることがしばしばある。プロプライエタリのソフトウェアは、バイナリの形態でさらに難読化を掛けて、販売されることが多い。

バイナリ形式でのデータの表現方法はさまざまなものがある。例えば、数値であれば0~9までの数をパターン化して記録するBCD、ゾーンビットと実際の数値、正の数か負の数かを記録する符号ビットからなるアンパック10進数(ゾーン10進数)や、実際の数値と符号ビットだけからなるパック10進数などがある。文字列の扱いとしては、ナル文字('\0')で終端する方法や、長さ(オクテット数、あるいは文字(符号点)の個数)を別に保持する、といった方式がある。前者では、'\0' を含むようなバイナリを「文字列」として扱うことができない。

注意点編集

バイナリフォーマットでは、エンディアンなどに互換性移植性の上で注意が必要であり、それを避けてテキスト形式で記録することも少なくない(UNIX哲学も参照。なお浮動小数点数やループした構造の表現など、テキスト形式にも注意が必要な点は多い)。

脚注編集

  1. ^ 厳密に言えば、テキストもバイナリの一種である(デコードすることにより文字列への変換が可能だが、もとは2進数のデータである)。また、バイナリの中にテキストが混在している場合もある。しかし、データの種類を区別する便宜上、バイナリとテキストは対比して用いられる。