• ベストアンサー

Endianについて

Endianというキーワードでいろいろ探してみたのですが、どこをみても「2バイト以上のデータ量を持つ数値データを記録したり転送するときには1バイトごとに分割する」と書いてあります、2バイト以上というのは、たとえば、int型(int a=777)のような変数ですよね!? これを別のPCに転送する際に1バイトずつしかデータが転送されないというのが疑問でなりません。 ネットでは、パケットごとにデータを転送しているのではないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • elttac
  • ベストアンサー率70% (592/839)
回答No.1

 エンディアンには,リトルエンディアンとビッグエンディアンの 2 種類があります。これは,2 バイト以上の数値データを記録・転送するときの「各バイトの並べ方」です。  たとえば,2 バイトの数値 0x0102(10 進数で 258)を考えましょう。ビッグエンディアンでは,この格納順は正順,つまり,   01 02 になります。一方,リトルエンディアンでは,格納順は逆順,つまり,   02 01 になります。リトルエンディアン(の並び)で記録された「02 01」をビッグエンディアンとして読み出すと 0x0201(513)になってしまいます。逆も同様です。ですから,数値がどちらのエンディアンで記録されているかが重要なのです。  ちなみに,Pentium などはリトルエンディアン,PowerPC などはビッグエンディアンの CPU です。  「e-words」の「エンディアン」の項目も参照ください。

参考URL:
http://e-words.jp/

その他の回答 (2)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

実際にどうやってデータを送っているかによりますが、 物理的には1ビット単位で送っているのが多いように思います。 シリアルな通信はビット単位です。 RS-232C,USB,IEEE1394(iLink),Ethernetはそうです。 そういう理由もあって、通信速度はバイトでなくビットで表現します。 bps(Bit Per Second) また、パラレルで送っている場合でも、実はEndianは関係あります。 結局はメモリ上でどういう順で入っているかという問題で、途中経路とは別問題です。

hourensou2003
質問者

お礼

elttacさん、Tacosanさん、terrar5さん、ありがとうございました。確かに論理的にはパケットでも実際は1バイトずつですよね(;^_^A

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

確かに論理的にはパケットごとに転送しているのですが, 物理的にはもっと小さい単位でしかデータを送ることができません. そもそも twisted-pair cable は 8本 (4対) しか電線がないので, 1個のパケットを一度に送るのは現在の技術では無理です. 10BASE-T なら一度に 1ビット, 1000BASE-T でも 4対全部使って ようやく一度に 1バイトしか送れません. ちなみにネットワーク上ではビッグエンディアンでデータを送ることに なっていますので, ビッグエンディアンのことをネットワークエンディアンとも 言ったりします.

関連するQ&A