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연산이 더 빠르기 때문에 더 성능적으로 뛰어남.

반응형