- ベストアンサー
基本情報処理技術者試験
下記の問題の説明がどうしても理解出来ませんので、ご教授いただけますと幸いです。 https://www.fe-siken.com/kakomon/15_aki/q6.html この問題では8ビットのデータの下位7ビットを取り出したいので、最上位ビット以外を「1」としたビット列「0111 1111」との論理積をとることで下位7ビットを取り出すことができます。 ⇒ どういう並びの数字(XXXX XXXX)が、「0111 1111 」と論理積を取って、下7桁を抽出する事が出来るのでしょうか? 理解出来ていないので、質問内容自体がおかしいかもしれません。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなが選んだベストアンサー
0 AND 0 = 0 0 AND 1 = 0 1 AND 1 = 1 が AND 演算の結果です。 最上位ビットを消したい訳ですから、データの最上位ビットに対して 0 で AND を取れば、最上位ビットが 0 であろうが 1 であろうが必ず 0 になります。 下位7ビットに対しては 1 で AND を取れば、データが 0 の時は 0 になり、データが 1 の時は 1 になるので、データを壊すこと無く取り出せます。
その他の回答 (2)
- t_ohta
- ベストアンサー率38% (5238/13705)
> ⇒データが0000 0000 となると、データは壊れて取り出せないという事でしょうか・・? 「0000 0000」 AND 「0111 1111」の結果は「0000 0000」ですからデータは壊れません。 データ側は 0 でも 1 も構わず、データに AND する値の方の話です。
お礼
やっと理解出来たと思います。 文章の意味をそもそもよく理解出来ていなかったんだと思います。 有難うございました!
- maiko04
- ベストアンサー率17% (345/1956)
10進数で考えましょう。 12345678という数字があって 01111111と掛け算すると ------------------------ 02345678と出てきますね。
補足
t_ohta様 早速のご回答、誠に有難うございます。 かなり理解出来たのですが、もう1点教えて頂けないでしょうか? 下位7ビットに対しては 1 で AND を取れば、データが 0 の時は 0 になり、データが 1 の時は 1 になるので、データを壊すこと無く取り出せます。 ⇒データが0000 0000 となると、データは壊れて取り出せないという事でしょうか・・?