こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

基本情報処理技術者試験 

下記の問題の説明がどうしても理解出来ませんので、ご教授いただけますと幸いです。
https://www.fe-siken.com/kakomon/15_aki/q6.html

この問題では8ビットのデータの下位7ビットを取り出したいので、最上位ビット以外を「1」としたビット列「0111 1111」との論理積をとることで下位7ビットを取り出すことができます。 

⇒ どういう並びの数字(XXXX XXXX)が、「0111 1111 」と論理積を取って、下7桁を抽出する事が出来るのでしょうか? 理解出来ていないので、質問内容自体がおかしいかもしれません。

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

投稿日時 - 2019-08-06 15:47:01

QNo.9643069

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> ⇒データが0000 0000 となると、データは壊れて取り出せないという事でしょうか・・?

「0000 0000」 AND 「0111 1111」の結果は「0000 0000」ですからデータは壊れません。
データ側は 0 でも 1 も構わず、データに AND する値の方の話です。

投稿日時 - 2019-08-06 16:18:24

お礼

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

投稿日時 - 2019-08-06 16:33:00

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

投稿日時 - 2019-08-06 15:59:51

補足

t_ohta様
早速のご回答、誠に有難うございます。 かなり理解出来たのですが、もう1点教えて頂けないでしょうか? 

下位7ビットに対しては 1 で AND を取れば、データが 0 の時は 0 になり、データが 1 の時は 1 になるので、データを壊すこと無く取り出せます。
⇒データが0000 0000 となると、データは壊れて取り出せないという事でしょうか・・? 

投稿日時 - 2019-08-06 16:08:25

ANo.1

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

投稿日時 - 2019-08-06 15:50:47

あなたにオススメの質問