ページ 1 / 1
メモリ操作
Posted: 2015年8月05日(水) 22:39
by manman
C言語を利用しています。
int型のデータ 16909060 を1Byteずつ取り出して表示するプログラムを作りたいのですが、
最終的に、 4 3 2 1 と表示されれば正解ですか?
Re: メモリ操作
Posted: 2015年8月05日(水) 22:44
by Dixq (管理人)
Re: メモリ操作
Posted: 2015年8月05日(水) 22:45
by みけCAT
manman さんが書きました:int型のデータ 16909060 を1Byteずつ取り出して表示するプログラムを作りたいのですが、
最終的に、 4 3 2 1 と表示されれば正解ですか?
わかりません。問題の仕様によります。
その問題は全角文字で出力する問題なのですか?
ちなみに、十進数の16909060は十六進数で1020304と等しいです。
Re: メモリ操作
Posted: 2015年8月05日(水) 22:52
by Dixq (管理人)
ちなみにみけCAT君の回答の値は普通のwindows標準電卓で計算できます。
添付ファイルをご覧ください。
Re: メモリ操作
Posted: 2015年8月05日(水) 22:58
by manman
バイトオーダーに気を付けて、16909060=1*256*256*256+1*256*256+3*256+4
より、変数に16909060を代入して確認しました。
1 2 3 4 か 4 3 2 1か微妙なところです。
Re: メモリ操作
Posted: 2015年8月05日(水) 23:05
by みけCAT
manman さんが書きました:バイトオーダーに気を付けて、16909060=1*256*256*256+1*256*256+3*256+4
より、変数に16909060を代入して確認しました。
1 2 3 4 か 4 3 2 1か微妙なところです。
対象のマシンによります。
x86などのリトルエンディアンのマシンでは下位アドレスから順に4 3 2 1、
MIPSなどのビッグエンディアンのマシンでは下位アドレスから順に1 2 3 4でしょう。
その他のエンディアンのマシンでは、その他の並びになるでしょう。
【追記】ググったらMIPSのエンディアンは「バイエンディアン」と言って切り替えられるらしいです。
Re: メモリ操作
Posted: 2015年8月05日(水) 23:06
by Dixq (管理人)
環境に依存します。
出題された問題が明確じゃないので回答も明確にできません。
また、int型のデータをどちらから順に表示する問題なのでしょうか?
上から?下から?
また、
> 16909060=1*256*256*256+1*256*256+3*256+4
これは
コード:
int a = 1<<24 | 2<<16 | 3<<8 | 4;
このように書いた方が見やすくて簡単ですよ。