• ベストアンサー

基本情報処理技術者試験 

下記の問題の説明がどうしても理解出来ませんので、ご教授いただけますと幸いです。 https://www.fe-siken.com/kakomon/15_aki/q6.html この問題では8ビットのデータの下位7ビットを取り出したいので、最上位ビット以外を「1」としたビット列「0111 1111」との論理積をとることで下位7ビットを取り出すことができます。  ⇒ どういう並びの数字(XXXX XXXX)が、「0111 1111 」と論理積を取って、下7桁を抽出する事が出来るのでしょうか? 理解出来ていないので、質問内容自体がおかしいかもしれません。 よろしくお願い致します。

みんなが選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

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 になるので、データを壊すこと無く取り出せます。

TEXASHAPPY
質問者

補足

t_ohta様 早速のご回答、誠に有難うございます。 かなり理解出来たのですが、もう1点教えて頂けないでしょうか?  下位7ビットに対しては 1 で AND を取れば、データが 0 の時は 0 になり、データが 1 の時は 1 になるので、データを壊すこと無く取り出せます。 ⇒データが0000 0000 となると、データは壊れて取り出せないという事でしょうか・・? 

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

> ⇒データが0000 0000 となると、データは壊れて取り出せないという事でしょうか・・? 「0000 0000」 AND 「0111 1111」の結果は「0000 0000」ですからデータは壊れません。 データ側は 0 でも 1 も構わず、データに AND する値の方の話です。

TEXASHAPPY
質問者

お礼

やっと理解出来たと思います。 文章の意味をそもそもよく理解出来ていなかったんだと思います。 有難うございました! 

  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.1

10進数で考えましょう。 12345678という数字があって 01111111と掛け算すると ------------------------ 02345678と出てきますね。

関連するQ&A