これは私の最後の投稿の更新ですが、この動作の仕方を理解するのにはまだまだ多くの問題があります。ビット単位の操作と "フラグ"の設定
void set_flag(int* flag_holder, int flag_position);
int check_flag(int flag_holder, int flag_position);
int main(int argc, char* argv[])
{
int flag_holder = 0;
int i;
set_flag(&flag_holder, 3);
set_flag(&flag_holder, 16);
set_flag(&flag_holder, 31);
for(i = 31; i >= 0; i--) {
printf("%d", check_flag(flag_holder, i));
if(i % 4 == 0)
printf(" ");
}
printf("\n");
return 0;
}
そして、我々は、出力が等しくなるよう、機能SET_FLAGとcheck_flagを書くことになっている割り当てのために:私が理解からそう
1000 0000 0000 0001 0000 0000 0000 1000
だから私は、主な機能を与えていました"set_flag"関数を使用してn番目のビットが1であることを確認していました。また、 "check_flag"関数は、n番目のビットが0のときは0、1のときは1を返します。 "set_flag"が実際に何をしているのか、3,16、および31がどのように "フラグ"として保存され、 "check_flag"に1として返されるかを理解する。
何を試してみましたか、どこで失敗していますか? [最小限で完全で検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)をお読みください。 –