アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
表題の問題、具体的な値を代入して答えが分かるのですが、
論理上どのように推理して結果を導き出せるか、
そうしても分からないので、誰か分かる人教えていただきませんか。

問題のテキストをコピーできないので、リンクを書きます。
http://www.jitec.jp/1_04hanni_sukiru/mondai_kait …

よろしくお願いいたします。

A 回答 (2件)

xを256で割った時の商と余りを考えます。


元々のxは
上位8ビット=(x div 256)
下位8ビット=(x mod 256)
x=(x div 256)*256+(x mod 256)
と表現できるはずです。
このとき「*256」は上位8ビットへの位取りだと考えられます。
なので、上位8ビットと下位8ビットを入れ替え、位取りを考えると、
x=(x div 256)+(x mod 256)*256
なので、正解は「イ」になります。
    • good
    • 0

ANo.1さんの回答で、完璧に正解です。

なので、私からは「蛇足になるかもしれない補足」を。

そもそも「256」とはなんぞや、についてです。

例えば、「259」という10進数の数字について考えて見ます。

10進数だと、257=2×100+5×10+9×1(正確には10のゼロ乗)と、各位に分けられます。
2進数だと、1×256(正確には2の8乗)+1×2(正確には2の1乗)+1×1(正確には2のゼロ乗)という位に分けられ、「100000011」という表記になります。

つまりn進数とは、数字を「nの何乗の部分にどんな数字を入れるか」によって表現されるのです。

で、今回の問題の場合は「2進数」「最大値は65535(正確には2の16乗マイナス1)」なので、上位8ビットと下位8ビットは、ANo.1さんの方法で算出することができます。でも、このまま2つの数字を足しても、単なる8ビットの数字が出てくるだけで、問題の題意にそっていません。

今回の場合、最上位のビットには「2の15乗」がいくつあるか、が入っています。上位8ビットの最後には「2の8乗」、つまり「10進数でいうところの256」がいくつあるか、が入っているのです。つまり、ここを境界線にして上位と下位のビットに分けて計算すれば、きれいに「上位8ビット」「下位8ビット」を算出することが可能なのです。

これが、「256」という数字の正体です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!