c++
c++공부
이야기prog
2025. 2. 24. 22:59
반응형
#include <iostream>
//bit flag를 사용할 때는 unsigned를 사용하는게 좋다. 왜냐하면 signed 변수들의 비트 쉬프트연산에 >>는 부호비트값을 바꾸지 않음 ex) 1011 1010을 >> 1하면 1101 1101이 됨
enum STATE: uint16_t {
INVINCIBLE = 0b1000,
STUN = 0b0100,
CHANGE = 0b0010,
NERVOUS = 0b0001
};
int main() {
uint16_t flag = 0b0000;
flag |= (STATE::INVINCIBLE | STATE::STUN);
if (flag & STATE::INVINCIBLE) {
std::cout << "INVINCIBLE!\n";
}
return 0;
}
어셈블리어중 movzx는 좌측 값의 타입크기가 우측값보다 커도 값을 복사하겠다는 의미,
test eax, eax 는 and 연산이랑 동일한대 cmp eax, 0는 sub연산 즉 값을 뺴면서 비교하는건데 and연산이 더 빠르기 때문에 더 성능적으로 뛰어남.
반응형