LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

エンディアン

エンディアン()とは、多バイトのデータ(即ち基本情報記憶単位を超えるデータ)をメモリ上に配置する方式の種類のこと。一般的な用語による表現ではバイトオーダ()、ないしそれを一部訳して日本語ではバイト順とも言う。英語の「」という単語自体には元々は「配置方式」「並び順」といった意味はなかった(#語源を参照)。日本では総称として「エンディアン」と呼ぶことが多いが、英語でそれに相当する語は(エンディアンネス)である。例えば 1234ABCD(16進数)という4バイトのデータを、データの上位バイトからメモリに「12 34 AB CD」と並べる方式をビッグエンディアン、データの下位バイトから「CD AB 34 12」と並べる方式をリトルエンディアンという。その他に「34 12 CD AB」あるいは「AB CD 12 34」のように並べる方式もあり、ミドルエンディアン、あるいはDECのPDP-11で使われていたことからPDPエンディアンなどと呼ばれる。ミドルエンディアンは、後付けの拡張などが理由で使われるが、実例は少ない。ビッグエンディアンは人間にとって直観的にわかりやすいという利点があり、一方リトルエンディアンはコンピュータにとって処理しやすい(多倍長加算の起点は最下位バイトであることなど)という利点がある。IBMのメインフレーム(及び互換機)、モトローラのMC68000(及び後継)、サン・マイクロシステムズのSPARC等はビッグエンディアンを採用し、DECのVAX、インテルのx86等はリトルエンディアンを採用している。ARMアーキテクチャ、トランスメタのCrusoe、ヒューレット・パッカードのPA-RISC、PowerPCなど、エンディアンを切り替えられるバイエンディアン (bi-endian) のプロセッサも存在する。ただし稼動CPUを問わずJava仮想マシンについてはビッグエンディアンである。エンディアンの相違は、単一あるいは同種のシステムに閉じた運用をする限りでは通常は問題にならないが、以下のような場合に問題になることがある。TCP/IPネットワークでは、エンディアンの異なるコンピュータ間での通信を可能とするため、パケットなどに含まれる多バイトデータはビッグエンディアンに統一することと決められている。これをネットワークバイトオーダという。これに対し、それぞれのコンピュータ上でのエンディアンのことをホストバイトオーダという。画像や音声などのバイナリファイルにおいても、互換性を確保するため、エンディアンが規定されている例が多い。Unicodeにおいても、構成要素が多バイトとなるエンコーディング(主にUTF-16)では、エンディアンが問題となる。そのため、バイト順マーク(、略語:BOM)と呼ばれる特殊なコード (U+FEFF) が予約されており、データの先頭にこれを付与することで、データを受け取る側がエンディアンを判別できるようになっている。BOMがない場合には、ビッグエンディアンだと決められている(→ UTF-16)。ただし、復号側が以上のルールでエンディアンを判別する狭義のUTF-16とは別に、エンディアンを事前に一方に決定しているUTF-16BEとUTF-16LEが存在する。Windows上の文書における「Unicodeテキスト」は、BOMがない場合、UTF-16LE(リトルエンディアン)である。より詳しく説明するため、この章では最も一般的な32ビット機のエンディアンの例を示す。すべての例は 0A0B0C0D という値をメモリに格納した場合を示している。例では最上位バイト (MSB) は 0A となり、メモリ上では一番低いアドレスに保存され、次のバイト 0B は続いて格納される。これは16進で左から右に読むのに似ている。最上位に 0A0B が保存され、続いて 0C0D が保存される。最下位バイト (LSB) は 0D で、そのアドレスは一番低い。他のバイトはアドレス増加に追従する。16ビットで格納されている最下位の値は 0C0D で続いて 0A0B が入る。さらに、ミドルエンディアン又はミックスドエンディアンと総称的に呼ばれることもある、さらに込み入ったバイトオーダもある(こういった「変」なものを扱う時は、どのような組合せなのか具体例での注意深い確認が欠かせない)。著名な例としては、PDP-11における32ビットワードの扱い方がある。PDP-11では 0x0A0B0C0D が、最上位バイトから 0B 0A 0D 0C という順に格納される。つまり、上位ハーフワード(16ビット)と下位ハーフワードとしてはビッグエンディアンで格納される。各ハーフワード内の上位下位の各オクテットはリトルエンディアンで格納される。PDP-エンディアンという別名がある。ARMアーキテクチャは32ビットワードを32ビットワードから2バイトに格納した場合、このエンディアンを生成することができる。他に変なものとしては、MIPSのELFファイル中に、64ビットワードを「上位32ビットはビッグエンディアン、下位32ビットはリトルエンディアン」で格納する、というフィールドがある。UNIXやLinuxにおいては多くの環境にインストールされている codice_1 コマンドがエンディアン依存の実行結果を表示するため、codice_1 コマンドで実行環境のエンディアンを確認することができる。32ビット機ビッグエンディアンでの出力結果32ビット機リトルエンディアンでの出力結果C言語では共用体を使ってエンディアンを確かめることが出来る。ただし、標準規格では処理系定義とされている動作に依存している。32ビット機ビッグエンディアンでの出力結果32ビット機リトルエンディアンでの出力結果となる。ビッグエンディアンとリトルエンディアンという単語は、ジョナサン・スウィフトの風刺小説『ガリヴァー旅行記』の中のエピソードに由来する。ガリバー旅行記の第1部「小人国」では、卵を丸い方(大きい方)の端から割る人々()と尖った方(小さい方)の端から割る人々 () との対立が描かれている。この語を計算機に転用したのはで、1980年のpaper "On Holy Wars and a Plea for Peace"で広く知られるようになった。日本では坂村健が広めたような覚えがある、としている文献がある。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。