dreamian   6년 전

비트 마스크 학습 중에 궁금한 점이 있습니다.

갑자기 궁금함이 생겨서 아래와 같은 코드를 입력했는데 에러가 뜹니다.

이것은 비트 시프트 연산이 32비트까지만 지원이 되고, 그 이후의 비트 연산은 수행할 수 없다는 건가요?

그렇다면 상태 저장을 하는 경우가 32비트를 초과한다면 2진수를 이용한 비트마스크 기법은 이용할 방법이 없는건지도 궁금합니다 !

zxcv551133   6년 전

시프트연산을 받는 1이 32비트 인트형이여서 그렇습니다. 

(long long)1 << 32 하시면 될거에요. 

unsigned long long 으로도 해결되지않는 64비트 이상의 비트마스킹은 bitset을 사용하시면 됩니다. 

dreamian   6년 전

정말 감사합니다.
에러 메세지에 (int)32가 있어서 헷갈렸는데 그런거였군요 !
많은 도움이 되었습니다 !

solveit   6년 전

1LL << 32로 하셔도 됩니다.

dreamian   6년 전

정말 감사합니다.

많은 도움이 되었습니다!

댓글을 작성하려면 로그인해야 합니다.