エンディアン エンディアンの確認

エンディアン

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/07/03 06:50 UTC 版)

エンディアンの確認

C言語

C言語では共用体を使ってエンディアンを確かめることが出来る。ただし、標準規格では処理系定義とされている動作に依存している[7]

#include <stdint.h>
#include <stdio.h>

int main (int argc, char **argv)
{
    union
    {
        uint32_t b4 ;     /* 4byte    */
        uint16_t b2 [2] ; /* 2byte×2 */
        uint8_t b1 [4] ;  /* 1byte×4 */
    } bytes ;

    bytes.b4 = 0x12345678 ;
    printf ("bytes.b4: %08X\n", bytes.b4) ;
    printf ("bytes.b2: %04X, %04X\n", bytes.b2[0], bytes.b2[1]) ;
    printf ("bytes.b1: %02X, %02X, %02X, %02X\n", bytes.b1[0], bytes.b1[1], bytes.b1[2], bytes.b1[3]) ;
    return 0 ;
}

32ビット機ビッグエンディアンでの出力結果

bytes.b4: 12345678
bytes.b2: 1234, 5678
bytes.b1: 12, 34, 56, 78

32ビット機リトルエンディアンでの出力結果

bytes.b4: 12345678
bytes.b2: 5678, 1234
bytes.b1: 78, 56, 34, 12

となる。


[ヘルプ]
  1. ^ : big endian
  2. ^ : little endian
  3. ^ : middle endian
  4. ^ Unicode Terminology English - Japanese, B, Unicode, Inc.
  5. ^ 一般論としてこのような変なものは、おそらくバグが由来で、en:Bug compatibility のせいでそのまま定着してしまったものが多いと思われる。
  6. ^ https://gist.github.com/rui314/b3a5b107ce20c2d54f345216cc15a980
  7. ^ 標準規格では、共用体を使って、同じ領域を異なる型としてアクセスした場合は処理系定義である。ポインタを使ってアクセスするのは、strict aliasing ruleにより未定義であるので良くない。ここで示しているコードはVisual C++ 2013、GCC 4.9.3で動作確認済み。
  8. ^ IEN 137 (1 April 1980) http://www.ietf.org/rfc/ien/ien137.txt これ以前の用語が「byte order」であったことなどもわかる
  9. ^ D. Cohen. 1981. On Holy Wars and a Plea for Peace. Computer 14, 10 (October 1981), 48-54. DOI=10.1109/C-M.1981.220208 http://dx.doi.org/10.1109/C-M.1981.220208
  10. ^ 中森章『マイクロプロセッサ・アーキテクチャ入門』p. 18 コラム


「エンディアン」の続きの解説一覧





エンディアンと同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

カテゴリ一覧

全て

ビジネス

業界用語

コンピュータ

電車

自動車・バイク

工学

建築・不動産

学問

文化

生活

ヘルスケア

趣味

スポーツ

生物

食品

人名

方言

辞書・百科事典

すべての辞書の索引

「エンディアン」の関連用語

エンディアンのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   
検索ランキング

画像から探す

ポケモンGO

ThinkPad Twist

Amazon Echo Look

Ultra-Mobile PC

Windows 98 SE

アークスライド

ファクトリーコンピュータ

Cintiq Companion





エンディアンのページの著作権
Weblio 辞書情報提供元は参加元一覧にて確認できます。

  
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのエンディアン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2017 Weblio RSS