バイナリとは
バイナリ(binary/バイナリー)は、コンピューターが扱う0と1の二進値、またはテキストではない形式のデータです。文脈により、バイナリー数字、バイナリーデータ、バイナリーファイル、実行バイナリー等を指します。
最小の論理単位bit(ビット)は二状態を表し、通常8ビットを一つのbyte(バイト)として扱います。ネットワーク仕様では8ビットを明確にするためoctet(オクテット)とも呼びます。
コンピューター上のテキストファイルも保存時にはバイト列です。「テキスト」と「バイナリー」は物理的に別物というより、バイト列を文字符号化として読むか、別の形式として読むかの区別です。

同じバイト列でも型で意味が変わる
符号付き/符号なし、ビット幅、バイト順で値が変わります。
文字エンコーディングがバイトとUnicode文字を対応付けます。
ヘッダー、画素、標本、圧縮ストリーム等を形式仕様に従って解釈します。
CPUアーキテクチャー、実行形式、権限が一致した場合にコードとして実行されます。
ビットは0か1の論理状態
電圧、電荷、磁化、光の状態等を一定範囲で二つへ区分し、論理0・1として扱います。実際の物理量が数学的に完全な0Vと1Vだけという意味ではありません。
複数ビットで2のn乗通りのパターンを表せます。8ビットバイトなら256通りです。そのパターンを数値・文字・色・フラグのどれと読むかはデータ種類と形式が決めます。
バイナリー数字とバイナリーデータ
二進数としての1010は、桁ごとに2の累乗を重みとして数値10を表します。一方、文字列"1010"をファイルへ保存すると、四文字それぞれの文字バイトになります。
ネットワーク取り込み等でビット列を記述していても、実際のパケットは通常バイト列としてAPIから扱います。表示表現と保存データを分けます。
「バイナリーファイル」はテキストとして直接編集しないファイル
画像、音声、圧縮ファイル、データベース、実行ファイル等をバイナリーファイルと呼びます。任意バイト値、NUL、固定幅フィールド、チェックサム等を含み、テキスト編集者で文字として保存し直すと壊れる場合があります。
バイナリーモードとテキストモードを持つ環境では、テキストモードが改行や終端を変換することがあります。完全なバイト一致が必要な転送・読書きはバイナリーモードを使います。
形式が境界と意味を定める
バイナリー形式はヘッダー、フィールド長、オフセット、タグ、ペイロード、末尾情報等を仕様化します。先頭のマジックナンバーで候補形式を識別できる場合がありますが、それだけで安全なファイルと断定しません。
解析器は長さを検証し、加算オーバーフロー、範囲外オフセット、深い入れ子、圧縮後の巨大展開を防ぎます。未知フィールドを飛び越しできる構造か、バージョン不一致を拒否するかも仕様に従います。
符号付きと符号なし
同じビットパターンを符号なし整数なら0以上、符号付き整数なら負数を含む範囲として解釈できます。現代の符号付き整数は二つ's補数表現が一般的です。
ビット幅を変えると符号拡張機能や0拡張機能が必要です。言語間・ネットワーク間で「整数型」だけを書かず、幅、符号、範囲、オーバーフロー処理を定めます。
バイト順とビット順序
複数バイトの数値で最上位バイトを先に置くのがビッグエンディアン、最下位バイトを先に置くのがリトルエンディアンです。ネットワークプロトコルではネットワークバイト順としてビッグエンディアンを使うものが多くあります。
バイト内のビットを図で左からどう番号付けするか、通信路へどの順で送るかは別のビット順序です。16進ダンプのバイト順を反転するだけで、各バイト内のビットまで反転しません。
16進表示はバイナリーを読みやすくする
長い0・1列は読み違えやすいため、一バイトを二桁で表せる16進数で表示します。16進編集者はバイナリーファイルを文字へ変換して保存するツールではなく、バイト値を16進表記で見せます。
Base64はバイト列を限定した文字集合へ符号化する別の表現です。16進は一バイトが二文字、Base64は三バイトが四文字になり、用途と増加率が違います。
バイナリは二状態のビットと、そのビットをまとめたバイト列です。バイト列単独では意味が決まらず、種類・形式・幅・符号・エンディアン・文字符号化を指定して初めて同じデータとして解釈できます。
octetとbinary dataを扱う基礎表記:RFC 1700 conventions/base16との対応:RFC 4648