빠른 질문이 있습니다.C++ Int 비트 조작은 2UL = 10UL입니까?
저는 C/C++에서 약간의 조작으로 잠시 놀았으며, 최근에 2UL과 10UL을 일반 서명되지 않은 int와 비교하면 같은 비트를 반환하는 것으로 나타났습니다. 예를 들어
,
#define JUMP 2UL
#define FALL 10UL
unsigned int flags = 0UL;
this->flags |= FALL;
//this returns true
this->is(JUMP);
bool Player::is(const unsigned long &isThis)
{
return ((this->flags & isThis) == isThis);
}
2U는 10U와 동일한 경우 확인하고하시기 바랍니다
그렇다면, 어떻게 하나의 부호없는 정수에 8 개 이상의 (?) 플래그가 필요하면 내가 주위 갈 것입니다.종류에 관해서, 물론
-Markus
아, 이제 알겠습니다. 감사! – Orujimaru
그래서 내가 원하는 것은 1,2,4,8,16 등입니다. 내가 할 수있는 것은 1UL, 2^1UL, 2^2UL, 2^3UL입니다. 그러나 예상대로 작동하지 않습니다. 512UL, 1024UL 등보다이 값을 정의하는 더 좋은 방법이 있습니까? – Orujimaru
@Orujimaru :'1UL << k' 어쩌면? – Fanael