演習 2-6. 位置 p から始まる n ビットを y の右端 n ビットに設定して x を返す関数 setbits(x,p,n,y) を作成し、他のビットは変更しません。
私はこの機能を紙の上で1、2時間いじろうとしてきましたが、どこにも行きません.
私が関数を解釈する方法は、任意の長さのビット フィールド x は、右端のn
ビットから開始するビットを調べることです。これらのビットを、任意の長さのビット フィールド y の右端のビットにある同じビットにp
変更します。n
n
例: p = 7
n = 9
x が一番上のフィールド、y が真ん中、結果が一番下のフィールドです。
任意のサイズのビット フィールドでこれを行う方法を判断するのに苦労しています。使用するsizeof(x) * 8
必要がありますか、それとも不要ですか?
このような関数を作成する方法について、ヒントをいただければ幸いです。
また、演習の他の解釈も知りたいです。おそらく、これは実行できると確信していますが、より簡単なバージョンです。時間がかかっていることを考えると、この件に関するセカンドオピニオンをいただければ幸いです。