【基礎理論】データの並び順が違う?「エンディアン」の仕組み|情報処理問題1000本ノック
コンピュータが複数バイトのデータをメモリやディスクに保存する際、その「並べる順番」には2通りの方式があります。データの「頭」から置くか、「お尻」から置くか。この違いを正しく理解しましょう。
1. 問題:数値データの格納順序
【 問題 】 複数バイトで構成される数値データをメモリやディスクに格納する際、数値の最上位バイト(MSB側)から順に配置する方式を何と呼ぶでしょうか?
① ビッグエンディアン ② リトルエンディアン ③ ミドルエンディアン ④ バイエンディアン
2. 正解:バイトオーダーに関する正解
正解: ① ビッグエンディアン
3. 解説:頭から並べるか、逆から並べるか
エンディアン(Endian)は、バイトオーダーとも呼ばれます。例えば「0x12345678」という4バイトのデータを保存する場合、方式によって並び順が真逆になります。
【図解:メモリ上の並び順イメージ】
データ:[12][34][56][78]
■ ビッグエンディアン(人間が書く順と同じ)
[12] → [34] → [56] → [78]
(最上位の「12」から順に置く)
■ リトルエンディアン(逆順)
[78] → [56] → [34] → [12]
(最下位の「78」から順に置く)
データ:[12][34][56][78]
■ ビッグエンディアン(人間が書く順と同じ)
[12] → [34] → [56] → [78]
(最上位の「12」から順に置く)
■ リトルエンディアン(逆順)
[78] → [56] → [34] → [12]
(最下位の「78」から順に置く)
[ 特徴と採用例 ]
★ ビッグエンディアン:ネットワークプロトコル(TCP/IPなど)で標準的に使われます。人間にとって読みやすい順序です。
★ リトルエンディアン:x86系プロセッサ(Intel/AMD)などで広く採用されています。下位桁の計算がしやすいというコンピュータ側のメリットがあります。
★ ビッグエンディアン:ネットワークプロトコル(TCP/IPなど)で標準的に使われます。人間にとって読みやすい順序です。
★ リトルエンディアン:x86系プロセッサ(Intel/AMD)などで広く採用されています。下位桁の計算がしやすいというコンピュータ側のメリットがあります。
1. 理解のコツ: 「ビッグ」は「大きな桁(上位)が先」、「リトル」は「小さな桁(下位)が先」と覚えましょう。ネットワーク通信ではビッグエンディアンが標準(ネットワークバイトオーダー)であることも重要なポイントです。
2. 試験対策の視点: 「最上位バイトから」というキーワードが出ればビッグエンディアンです。異なるエンディアンを持つ機種間でデータをやり取りする際には、このバイト順を入れ替える処理が必要になる、という文脈でも出題されます。
4. まとめ
「データの並び順の決まり」。これがエンディアン(バイトオーダー)です。一見地味な違いですが、異なるシステム間でデータを正しく受け渡すための、非常に重要な共通ルールであることを押さえておきましょう!
PR