サンプル問題6(シフト演算)について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
INTJ高校生さん  
(No.1)
サンプル問題6(シフト演算)について

なぜアルゴリズム中に「rに、取り出した数字を右から入れろ」という命令がないのに多くの参考書や解説動画は勝手に右から入れているんでしょうか?なぜそうするかという「アルゴリズムの気持ち」は理解できています。アルゴリズムってそういう記述されていない勝手な事もしていいのですか?
2024.01.12 21:58
boyonboyonさん 
FE ブロンズマイスター
(No.2)
右から入れているようにも見えますが、この問題では最下位ビットとrの論理和をとっています。

0と1だけでは、分かりにくいのでアルファベットを使ってみます。
byte=abcdefgh (a,b,c,d,e,f,g,hは、0または1)
rbite=abcdefgh
r=00000000

アの処理を繰り返します。
1回目
r<<1  →  r=00000000
rbyte ^ 00000001  →  0000000h=*
r V * →  0000000h →  r
rbyte>>1 →  rbyte=0abcdefg

2回目
r<<1  →  r=000000h0
rbyte ^ 00000001  →  0000000g=*
r V * →  000000hg  →  r
rbyte>>1 →  rbyte=00abcdef

・・・・・

8回目
r<<1  →  r=hgfedcb0
rbyte ^ 00000001  →  0000000a=*
r V * →  hgfedcba →  r
rbyte>>1 →  rbyte=00000000

こんな流れなので、右から入れているわけではありません。
2024.01.12 23:04
INTJ高校生さん  
(No.3)
rを書き換える流れがいまいち把握できていませんでした。おかげで理解できました!ありがとうございます!
2024.01.12 23:31

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop