인프런 커뮤니티 질문&답변

mmq mmq님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C++

3.9 비트 플래그, 비트 마스크 사용법 Bit flags, Bit masks

연습문제 코드 첨부

작성

·

297

0

안녕하세요 

좋은 강의 잘 듣고 있습니다.

연습문제를 풀어 보았는데 맞게 한건지 궁금하여 첨부합니다.

int main()  //연습문제

{

unsigned char option_viewed = 0x01;

unsigned char option_edited = 0x02;

unsigned char option_liked = 0x04;

unsigned char option_shared = 0x08;

unsigned char option_deleted = 0x80;

unsigned char my_article_flags = 0;

/*cout << bitset<8>(option_viewed) << endl;

cout << bitset<8>(option_edited) << endl;

cout << bitset<8>(option_liked) << endl;

cout << bitset<8>(option_shared) << endl;

cout << bitset<8>(option_deleted) << endl;*/

//viewed article

my_article_flags |= option_viewed;

cout << bitset<8>(my_article_flags) << endl;

//clicked like 

my_article_flags |= option_liked;

cout << bitset<8>(my_article_flags) << endl;

//clicked like again

my_article_flags &= ~option_liked;

cout << bitset<8>(my_article_flags) << endl;

//deleted this article

my_article_flags |= option_deleted;

cout << bitset<8>(my_article_flags) << endl;

return 0;

}

답변 2

1

문제 없이 잘 하신 것 같습니다.

뭔가 하나 알려드리면 Exclusive or 이라는 게 있는데, ^ 입니다. 
https://en.wikipedia.org/wiki/Exclusive_or에서 truth table 만 보고 오셔도 충분합니다.

이걸 사용하시면 option_liked에 대한 동작을 하나로 만드실 수 있습니다. (다른 것도 마찬가지입니다.)

0

mmq mmq님의 프로필 이미지
mmq mmq
질문자

항상 좋은 가르침 감사합니다.

my_article_flags |= option_liked;   와   my_article_flags &= ~option_liked;  를

XOR을 사용하여 한줄의 코드로 만들 수 있다는 말씀이신가요?

XOR을 사용하여 이것저것 시도는 해 보았으나 같은 동작을 할 수 있는 코드는 아직 만들어내지 못했습니다.

저의 실력 부족인것 같습니다..

mmq mmq님의 프로필 이미지

작성한 질문수

질문하기