これについてもっと学び、プロジェクトに実装しようとしています。
私は現在、基本的にこれを持っています:
unsigned char flags = 0; //8 bits
flags |= 0x2; //apply random flag
if(flags & 0x2) {
printf("Opt 2 set");
}
今、もう少し複雑なことをしたいと思っています。やりたいことは、次のような 3 つのフラグを適用することです。
flags = (0x1 | 0x2 | 0x4);
そして、フラグ0x1
を削除し0x2
てから?私は、ビット単位の NOT を適用して (およびビット単位の AND を適用して)、次のようなことができると考えました。
flags &= ~(0x1 | 0x2);
どうやら彼らはそこに残っているか、私がチェックするとどちらかの方法で残っています。
ビットフラグに存在しないかどうかを確認する方法もわかりません(したがって、以前のコードが機能するかどうかを確認できません)。
if(flags & ~0x2)
printf("flag 2 not set");
最近の検索では、これに当てはまるリソースが見つかりません。他の人に教えるためにこれを学びたいと思っています。本当に興味があります。これが紛らわしいまたは単純な場合はお詫び申し上げます。