メモリ操作

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
manman

メモリ操作

#1

投稿記事 by manman » 10年前

C言語を利用しています。
int型のデータ 16909060 を1Byteずつ取り出して表示するプログラムを作りたいのですが、
最終的に、 4 3 2 1 と表示されれば正解ですか?

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: メモリ操作

#2

投稿記事 by Dixq (管理人) » 10年前

あれ、既にほぼ同じ問題に回答しましたが、
http://dixq.net/forum/viewtopic.php?f=3&t=16864
こちらとは別件ですか?

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: メモリ操作

#3

投稿記事 by みけCAT » 10年前

manman さんが書きました:int型のデータ 16909060 を1Byteずつ取り出して表示するプログラムを作りたいのですが、
最終的に、 4 3 2 1 と表示されれば正解ですか?
わかりません。問題の仕様によります。
その問題は全角文字で出力する問題なのですか?
ちなみに、十進数の16909060は十六進数で1020304と等しいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: メモリ操作

#4

投稿記事 by Dixq (管理人) » 10年前

ちなみにみけCAT君の回答の値は普通のwindows標準電卓で計算できます。
添付ファイルをご覧ください。
tmp.png

manman

Re: メモリ操作

#5

投稿記事 by manman » 10年前

バイトオーダーに気を付けて、16909060=1*256*256*256+1*256*256+3*256+4
より、変数に16909060を代入して確認しました。
1 2 3 4 か 4 3 2 1か微妙なところです。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: メモリ操作

#6

投稿記事 by みけCAT » 10年前

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のエンディアンは「バイエンディアン」と言って切り替えられるらしいです。
最後に編集したユーザー みけCAT on 2015年8月05日(水) 23:07 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: メモリ操作

#7

投稿記事 by Dixq (管理人) » 10年前

環境に依存します。
出題された問題が明確じゃないので回答も明確にできません。
また、int型のデータをどちらから順に表示する問題なのでしょうか?
上から?下から?

また、
> 16909060=1*256*256*256+1*256*256+3*256+4

これは

コード:

int a = 1<<24 | 2<<16 | 3<<8 | 4;
このように書いた方が見やすくて簡単ですよ。

閉鎖

“C言語何でも質問掲示板” へ戻る