0
K & Rのエクササイズ2-6:K&Rのエクササイズ2-6:理解していない入力/出力
位置に右端の
n
からp
セットを開始n
ビットでx
を返す関数setbits(x,p,n,y)
を書きますビットはy
となり、他のビットは変更されません。ここで
たとえば入力/出力の私の解釈です:
unsigned x = 315;
int p = 2;
int n = 3;
unsigned y = 9;
printf("%d\n", setbits(x, p, n, y)); // 295
そして、ここでは私の推論です。
0000 0001 0011 1011
- --
9 3右端ビット:315 => 295のために2から始まる3ビット9 3右端ビット
0000 0000 0000 1001
---
セット315のための2位の
3ビット:
0000 0001 0010 0111
- --
私はいくつかのコードを書いた後、他のソリューション、for exampleに対してそれをチェックしたいです。私がオンラインで見つけた2つの答えは、313:
0000 0001 0011 1001
--- ???
私は何が欠けていますか?
索引付けはCでゼロから開始します。おそらく、「位置2」は3番目のビットです。 – EOF
[mcve]がなければ、コードを診断することはできません。 – Olaf
さて、私はそれについて疑問に思っていたし、両方の方法を試みた。私は正しい位置を反映するために私の質問を編集しましたが、それでも私には意味がありません。 – gwg