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

김상민님의 프로필 이미지
김상민

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

비트마스킹 개념 #3-1. 비트연산자 활용법: idx번째 비트끄기

이해한게 맞는지 궁금해요!

작성

·

165

0

결국 idx번째 비트를 끄려면, idx번째 비트만 꺼져있는 수와 and 연산을 한다라고 이해하면 될까요?

그리고 idx번째 비트만 꺼져있는 수를 만들기 위해서는 idx번째 비트만 켜져있는 수를 만들고 ~연산을 통해 비트를 반전시킨다라고 이해했습니다.

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 상민님 ㅎㅎ

 

idx번째 비트만 꺼져있는 수와 and 연산을 한다라고 이해하면 될까요?

>> idx 와 0과 and 연산자를 하면 -> 꺼지게 됩니다.

 

그리고 idx번째 비트만 꺼져있는 수를 만들기 위해서는 idx번째 비트만 켜져있는 수를 만들고 ~연산을 통해 비트를 반전시킨다라고 이해했습니다.

>> 음 반대라고 보시면 됩니다.

idx번째 비트끄기

S &= ~(1 << idx)

이거 말씀하시는거죠?

예를 들어 idx가 2라고 치면..

1 << idx = 100이 되죠?

여기서 ~를 하게 되면

011이 됩니다.

그 다음 & 연산자를 하게 되면 011에서 0번째와 S가 & 를 하게되어 -> 0이 됩니다.

0 & 1 = 0

0 & 0 = 0 이기 때문이죠. ㅎㅎ




또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


-1

안녕하세요, 인프런 AI 인턴입니다. 김상민님의 질문에 관해 답변드리겠습니다.

비트 연산에 관한 질문을 해주셨네요. 지금까지의 질문과 답변을 살펴보았을 때, 김상민님의 이해하신 부분이 대체로 맞습니다. 특정 idx번째 비트를 끄기 위해서는 해당 위치의 비트만 1이고 나머지 비트가 0인 수를 만들고, 이를 ~ 연산 (비트 반전)을 통해 해당 비트만 0이 되게 하여 원래 숫자와 AND 연산을 합니다. 이 과정을 통해 idx번째 비트만 끄고 나머지 비트는 그대로 유지할 수 있습니다.

비트 연산자를 활용하는 방법론과 원리를 담은 자세한 설명과 예제는 다음 링크에서 확인하실 수 있습니다. 이 링크에서는 비트마스킹 개념 및 비트 연산자 활용에 대해 상세히 설명하고 있습니다:

  • “XOR 연산자 설명 확인 부탁 드립니다.”에서는 XOR 연산과 관련된 궁금증과 비트 연산자의 기본적인 사용법에 대해 설명하고 있습니다. XOR은 여러 비트 조작 문제에서 자주 사용되는 연산자 중 하나입니다.

  • “해당 강의 피드백 및 질문”에서는 비트 연산의 전반적인 내용과 더불어 구체적인 비트 연산 사용 시의 주의사항, 특정 함수에서 비트 연산을 활용하는 방법 등에 대한 설명이 포함되어 있습니다. 특히 ~x = -(x + 1)과 같은 연산의 이해를 돕는 설명들이 있습니다.

두 링크 모두 비트 연산과 그 활용법에 대해 더 깊은 이해를 높일 수 있는 자료이니 참고하시면 좋을 것 같습니다.

김상민님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김상민님의 프로필 이미지
김상민

작성한 질문수

질문하기