白駿11723位マスク
ビットマスク
長所
インプリメンテーション
しゅつりょく
void show(int *a) {
for (int i = 32; i > 0; i--) {
cout << ((*a & (1 << (i - 1))) ? 1 : 0 );
}
}
初期化(null)
void init(int *a) {
*a = 0;
}
すべてを含む
void full(int *a) {
*a = -1;
}
i番目のインデックスを挿入
void set(int *a, int i) {
*a |= (1 << i);
}
最初のインデックスを削除
void drop(int *a, int i) {
*a &= ~(1 << i);
}
i番目のインデックスの確認
bool check(int *a, int i) {
return (*a & (1 << i));
}
i 2番目のインデックスを切り替える(1は0、0は1)(xor演算^)
void toggle(int *a, int i) {
*a ^= (1 << i);
}
最後の要素を求めます
int getLast(int *a) {
return (*a & -*a);
}
最後の要素を削除
void dropLast(int *a) {
*a &= (*a - 1);
}
TEST
int main () {
int a;
full(&a);
cout << "모두 포함\n";
show(&a); cout << "\n";
init(&a);
cout << "null초기화\n";
show(&a); cout << "\n";
set(&a, 4);
set(&a, 7);
cout << "4, 7 추가\n";
show(&a); cout << "\n";
drop(&a, 4);
cout << "4 삭제\n";
show(&a); cout << "\n";
cout << "7 확인 :" << check(&a,7) << "\n";
toggle(&a, 7);
toggle(&a, 3);
toggle(&a, 2);
cout << "2, 3, 7 togle\n";
show(&a); cout << "\n";
cout << "마지막 원소 구하기 : " << getLast(&a) << "\n";
show(&a); cout << "\n";
dropLast(&a);
cout << "마지막 원소 삭제\n";
show(&a); cout << "\n";
}
Reference
この問題について(白駿11723位マスク), 我々は、より多くの情報をここで見つけました https://velog.io/@hopark/11723-비트-마스킹テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol