これは私の最後の投稿の更新ですが、これがどのように機能するかを理解するのにまだ苦労しています. だから私は主な機能を与えていました:
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
したがって、私が理解していることから、n 番目のビットが 1 であることを確認するために「set_flag」関数を使用することになっていました。 . "set_flag" が実際に何をしているのか、3、16、31 がどのように "flags" として保存され、"check_flag" で 1 として返されるのかがわかりません。