No.17 8ビットのビット列の下位4ビットが変化しない操作はどれか。
⭕️ |
[[ AnswerCalc[0] ]] % |
A |
[[ AnswerCalc[1] ]] |
各論理演算は次のような操作を意味しています。
- 論理積(AND)
- 2つのビットが両方とも1のときにだけ1を出力し、それ以外は0を出力する。
- 論理和(OR)
- 2つのビットのどちらかが1であれば1を出力し、両方とも0のときは0を出力する。
- 排他的論理和(XOR)
- 2つのビットが異なるときは1を出力し、同じときは0を出力する。
- 否定論理積(NAND=Not AND)
- AND演算の結果を反転した演算で、2つのビットが両方とも1のときにだけ0を出力し、それ以外は1を出力する。
16進表記 0F を2進表記にすると「00001111」です。ここでは演算対象となる8ビットのビット列に仮の値として「10101010」を使用し各選択肢を検証していきます。(※10101010を用いているのは演算後の変化が把握しやすいからです。もちろん他のビット列でも構いません)
- 16進表記 0F のビット列との排他的論理和をとる。
10101010 XOR 00001111=10100101 - 16進表記 0F のビット列との否定論理積をとる。
10101010 NAND 00001111=11110101 - 16進表記 0F のビット列との論理積をとる。
10101010 AND 00001111=00001010 - 16進表記 0F のビット列との論理和をとる。
10101010 OR 00001111=10101111
各演算結果の下位4ビットに注目すると、演算前と比較して被演算ビット列の下位4ビットが変化していないのはAND演算(論理積)ということがわかります。
一般に任意のビット列から特定のビット列を
取り出したいときにはAND演算、任意のビット列のうち特定のビット列を
反転させたいときにはXOR演算を使うことができるので覚えておくといいでしょう。
💾
✔️
![]() |
[[ d.CommentTxt ]] |