- ベストアンサー
Endianについて
Endianというキーワードでいろいろ探してみたのですが、どこをみても「2バイト以上のデータ量を持つ数値データを記録したり転送するときには1バイトごとに分割する」と書いてあります、2バイト以上というのは、たとえば、int型(int a=777)のような変数ですよね!? これを別のPCに転送する際に1バイトずつしかデータが転送されないというのが疑問でなりません。 ネットでは、パケットごとにデータを転送しているのではないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エンディアンには,リトルエンディアンとビッグエンディアンの 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)
実際にどうやってデータを送っているかによりますが、 物理的には1ビット単位で送っているのが多いように思います。 シリアルな通信はビット単位です。 RS-232C,USB,IEEE1394(iLink),Ethernetはそうです。 そういう理由もあって、通信速度はバイトでなくビットで表現します。 bps(Bit Per Second) また、パラレルで送っている場合でも、実はEndianは関係あります。 結局はメモリ上でどういう順で入っているかという問題で、途中経路とは別問題です。
- Tacosan
- ベストアンサー率23% (3656/15482)
確かに論理的にはパケットごとに転送しているのですが, 物理的にはもっと小さい単位でしかデータを送ることができません. そもそも twisted-pair cable は 8本 (4対) しか電線がないので, 1個のパケットを一度に送るのは現在の技術では無理です. 10BASE-T なら一度に 1ビット, 1000BASE-T でも 4対全部使って ようやく一度に 1バイトしか送れません. ちなみにネットワーク上ではビッグエンディアンでデータを送ることに なっていますので, ビッグエンディアンのことをネットワークエンディアンとも 言ったりします.
お礼
elttacさん、Tacosanさん、terrar5さん、ありがとうございました。確かに論理的にはパケットでも実際は1バイトずつですよね(;^_^A