- 締切済み
マスク処理・ビットシフト教えてくださいっ!
10文字入る文字型配列aaを、ビットの列と考える(全部で80ビット)、この配列のビットを先頭から0ビット目、1ビット目、・・、79ビット目と数えると、 0ビット目:aa[0]の0ビット 7ビット目:aa[0]の7ビット 9ビット目:aa[1]の1ビット 17ビット目:aa[2]の1ビット では、nビット目は「aa[S]のRビット」とした時、SとRをビット操作でnを用いてどのように求めればよいか今までの課題と同様に答えなさい。 マスク処理する場合には、AND 0x00F0のように書き、ビットシフトする場合にはシフトするビット数をnからどのようなビット処理で求めるかを書くこと。 この問題が分からなくて困っています…! 教えてくれる方いらっしゃいませんか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kichi8000
- ベストアンサー率41% (660/1584)
「今までの課題」など知りませんけど。 問題以前の基本則はおわかりでしょうか。 「この配列のビットを先頭から」というのは「先頭ってどこ?」という感じでしょうか。 この場合、下位ビットですね。右端の。 また、80ビットで10文字と言えば、1文字で8ビット=1バイトになります。 aa[0]に10進で65を代入しておくとすると、 文字型配列の内容は aa = {aa[9],aa[8],aa[7],aa[6],aa[5],aa[4],aa[3],aa[2],aa[1],aa[0]} = {0,0,0,0,0,0,0,0,0,65} バイト列にすると aa = 0x00 00 00 00 00 00 00 00 00 41 ビット列にすると aa = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000001 問題の意図は指定のビットが「0」または「1」であることを判定し、判定するにはマスク処理とビットシフトを使ってどういう演算をしたらいいか、ということです。 これはご自分で理解しないと意味がありませんよ。 マスク処理とビットシフトをいま勉強しているのならなおさらです。
- andy_kun
- ベストアンサー率23% (64/274)
課題は自力で解かないと意味が無いですよ。(笑) 最終的に何を求める課題なのでしょうか? ちなみにSはnを8で割った時の商、Rはnを8で割った時の余りですね。 あとは自分で考えてください。