작성
·
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
항상 좋은 가르침 감사합니다.
my_article_flags |= option_liked; 와 my_article_flags &= ~option_liked; 를
XOR을 사용하여 한줄의 코드로 만들 수 있다는 말씀이신가요?
XOR을 사용하여 이것저것 시도는 해 보았으나 같은 동작을 할 수 있는 코드는 아직 만들어내지 못했습니다.
저의 실력 부족인것 같습니다..