ページ 11

16進数の順番について

Posted: 2007年2月06日(火) 17:50
by parapara
こちらの不手際で次の質問欄に書き込みします。

16進数の順番について===訂正===

Posted: 2007年2月06日(火) 18:00
by parapara
始めまして、独学でC言語を勉強してる物ですが、
コンピューターの中の16進数の事があまり良く分からないので教えてください。
PCはDELLのディメンション8300です。
コンパイラはMicrosoft Visual C++ .NET   55577-640-4383485-18159
説明不足だと思いますが、以下の状況(16進数のPCの中での順番が分からない)です。
#include<stdio.h>
#include<stdlib.h>
int main(void){
    char ss[/url]="ABCDEF";
    void *vpt;
    int idt;

    vpt=ss;                    //Aを指しているポインタ
    idt=*(char *)vpt;
    printf("char:%X\n",idt);
    idt=*(int *)vpt;
    printf("int :%X\n\n",idt);
    
    {//変数を新たに宣言するためのブロック
    int dt=0x41424344;
    int *ip;
    char *cp;
    ip=&dt;
    cp=(char *)ip;
    printf("%x\n",*ip);
    printf("%x\n",*cp++);
    printf("%x\n",*cp++);
    printf("%x\n",*cp++);
    printf("%x\n",*cp++);
    }
    return(EXIT_SUCCESS);
}
=============実行結果===============================================
char:41         ←これは分かる
int :44434241   ←この行以下なんでこの順番なのかが分からない

41424344
44
43
42
41
Press any key to continue

Re:16進数の順番について===訂正===

Posted: 2007年2月06日(火) 18:51
by parapara
禁止事項だとは知らずにマルチポスト(の言葉自体知らなかった)してしまいました。
深く反省しましたが、何卒どうか質問にお答えください。

Re:16進数の順番について===訂正===

Posted: 2007年2月06日(火) 19:15
by parapara
リトルエンディアンのことだと思いますが。
それが具体的に私のソースコードと直接どういう風に関係しているのか知りたいのです。それを詳解してる書籍などでも教えていただけると、幸いです。今使っている書籍は、”林 晴比古のシニア編”です。

Re:16進数の順番について===訂正===

Posted: 2007年2月06日(火) 20:15
by GPGA
[color=40D0FF]char[/color] ss[/url] = "ABCDEF";

ここの ss のアドレスが 仮に 100番地だったとしましょう。
その場合

番地: 100   101   102   103
値  : 0x41  0x42  0x43  0x44

となります。

int idt = *((int *)ss);

上記のようにint型のidtにキャストした場合、リトルエンディアンだと

idtの0バイト目:0x41(100番地)
idtの1バイト目:0x42(101番地)
idtの2バイト目:0x43(102番地)
idtの3バイト目:0x44(103番地)

になるので

対応するバイト: 3210
                 ↓↓↓↓
        idt == 0x44434241

となります。
自分で説明していて、わかりづらいな~とは思うのですけど
この説明でわかりますでしょうか?

なおビッグエンディアンの場合は、キャストした際に
idtの0バイト目:0x44(103番地)
idtの1バイト目:0x43(102番地)
idtの2バイト目:0x42(101番地)
idtの3バイト目:0x41(100番地)

になるので

対応するバイト: 3210
                 ↓↓↓↓
        idt == 0x41424344

となります。

Re:16進数の順番について===訂正===

Posted: 2007年2月07日(水) 09:37
by parapara
これ以上がない位的確に詳細に教えてもらえたと思います。
しかし難しくてなかなか理解できず、暫く理解するために考えてみる事にします。
本当にありがとうございました。

Re:16進数の順番について===訂正===

Posted: 2007年2月07日(水) 09:54
by (報告)
既に解決済みですがマルチポスト先をリンクさせておきます。
http://www2.realint.com/cgi-bin/tarticl ... intc+29713