解説について質問(令和3年免除 問2)
Tomoさん
(No.1)
令和3年免除 問2についてです。
解説の中にある「xの下位8ビットは、xを256で割った余りと同じ」とありますが、この文言が理解ができません。お手数ですが、どなたか教えていただけないでしょうか。
【問題】
0以上65,536未満の整数xを,16ビットの2進数で表現して,上位8ビットと下位8ビットを入れ替える。得られたビット列を2進数とみなしたとき,その値をxを用いた式で表したものはどれか。ここで,a÷bはaをbで割った商の整数部分を,a%bはaをbで割った余りを表す。また,式の中の数値は10進法である。
【解説(抜粋)】
さらに入れ替え後の上位8ビットは、入れ替え前の下位8ビットを、左へ8ビットシフトすることで得ることができます。xの下位8ビットは、xを256で割った余りと同じです。2進数は、左に1ビットシフトするごとに値が2倍になる性質がありますから、左へ8ビット分シフトした値は、下位8ビットの値を「×2^8 → ×256」することで表現できます。
解説の中にある「xの下位8ビットは、xを256で割った余りと同じ」とありますが、この文言が理解ができません。お手数ですが、どなたか教えていただけないでしょうか。
【問題】
0以上65,536未満の整数xを,16ビットの2進数で表現して,上位8ビットと下位8ビットを入れ替える。得られたビット列を2進数とみなしたとき,その値をxを用いた式で表したものはどれか。ここで,a÷bはaをbで割った商の整数部分を,a%bはaをbで割った余りを表す。また,式の中の数値は10進法である。
【解説(抜粋)】
さらに入れ替え後の上位8ビットは、入れ替え前の下位8ビットを、左へ8ビットシフトすることで得ることができます。xの下位8ビットは、xを256で割った余りと同じです。2進数は、左に1ビットシフトするごとに値が2倍になる性質がありますから、左へ8ビット分シフトした値は、下位8ビットの値を「×2^8 → ×256」することで表現できます。
2023.12.03 23:12
hamaさん
(No.2)
下位8ビットの最大値は10進数の255なので、xを256で割った余りで求められます。
普通の10進数で考えるとわかりやすいと思います。例えば、4桁の10進数の下2桁を求めるとします。下2桁の最大値は99なので、100で割った余りで求められます。
→ (例) 3698 mod 100 = 98
普通の10進数で考えるとわかりやすいと思います。例えば、4桁の10進数の下2桁を求めるとします。下2桁の最大値は99なので、100で割った余りで求められます。
→ (例) 3698 mod 100 = 98
2023.12.04 00:30
boyonboyonさん
★FE シルバーマイスター
(No.3)
Xを2進数で表します。
A-Pは、0または1だと思ってください。
X=ABCDEFGH IJKLMNOP
として
ABCDEFGH 00000000 ①
00000000 IJKLMNOP ②
の2つに分けてみます。
①は、256で割るとちょうど割り切れて
商は、ABCDEFGH
②は、256で割ると0あまりIJKLMNOPになります。
16ビット表記するとそれぞれ
00000000 ABCDEFGH ③
00000000 IJKLMNOP ②
になります。ここで、②を256倍すれば、
IJKLMNOP 00000000
③と合わせて、
IJKLMNOP ABCDEFGH
となります。
A-Pは、0または1だと思ってください。
X=ABCDEFGH IJKLMNOP
として
ABCDEFGH 00000000 ①
00000000 IJKLMNOP ②
の2つに分けてみます。
①は、256で割るとちょうど割り切れて
商は、ABCDEFGH
②は、256で割ると0あまりIJKLMNOPになります。
16ビット表記するとそれぞれ
00000000 ABCDEFGH ③
00000000 IJKLMNOP ②
になります。ここで、②を256倍すれば、
IJKLMNOP 00000000
③と合わせて、
IJKLMNOP ABCDEFGH
となります。
2023.12.04 19:10
Tomoさん
(No.4)
hamaさん、boyonboyonさん
ご回答いただき、ありがとうございます。
わかりやすいご説明でスッキリできました!
ご回答いただき、ありがとうございます。
わかりやすいご説明でスッキリできました!
2023.12.05 01:10
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告