#include <iostream>
int main()
{
const int Attack = 0x1; // 0001
const int Armor = 0x2; // 0010
const int HP = 0x4; // 0100
const int MP = 0x8; // 1000
const int Critical = 0x10; // 10000
int Buf = 0;
// Buf = 0 | 1 = 1
Buf = Buf | Attack;
// Buf = 001 | 100 = 101
Buf = Buf | HP;
// Buf = 00101 | 10000 = 10101
Buf = Buf | Critical;
// Buf = 10101 | 10000 = 10101
Buf = Buf | Critical;
// Buf = 10101 ^ 00100 = 10001
Buf = Buf ^ HP;
// Buf = 10001 ^ 00100 = 10101
Buf = Buf ^ HP;
// 10101 & 00001 = 00001
std::cout << "Attack : " << (Buf & Attack) << std::endl;
// 10101 & 00010 = 00000
std::cout << "Armor : " << (Buf & Armor) << std::endl;
// 10101 & 00100 = 00000
std::cout << "HP : " << (Buf & HP) << std::endl;
// 10101 & 01000 = 00000
std::cout << "MP : " << (Buf & MP) << std::endl;
// 10101 & 10000 = 10000
std::cout << "Critical : " << (Buf & Critical) << std::endl;
/*
쉬프트 연산자 : <<, >> 2가지 연산이 제공된다.
10 << 2 =
10 / 2 = 5 .. 1
5 / 2 = 4 ... 1
2 / 2 = 1 ... 0
1010
1010 << 2 = 101000 이 된다.
즉, 40이 된다.
1010 << 3 = 1010000 이 된다.
즉, 80이 된다.
<< 은 2의 n승 단위 곱처리를 빠르게 할 수 있다.
40 >> 2 = 101000 >> 2 = 1010.00 = 1010 (소숫점 이하는 절삭)
즉, 10이 된다.
80 >> 3 = 1010000 >> 3 = 1010.000 = 1010
즉, 10이 된다.
>>은 2의 n승 단위의 나눗셈처리를 빠르게 할 수 있다.
*/
int Color = 0;
/*
투명도(A), R, G, B 각 1비트로 총 4비트
ex) 투명도 100, R : 130, G : 200, B : 78 일 때, 쉬프트와 비트단위 연산자 이용해서 컬러값 넣기.
*/
// 00000000 00000000 00000000 01100100
Color = 100;
// 00000000 00000000 01100100 00000000
Color = Color << 8;
// 00000000 00000000 01100100 00000000 | 00000000 00000000 00000000 10000010 = 00000000 00000000 01100100 10000010
Color = Color | 130;
// 00000000 01100100 10000010 00000000
Color = Color << 8;
// 00000000 01100100 10000010 00000000 | 00000000 00000000 00000000 11001000 = 00000000 01100100 10000010 11001000
Color = Color | 200;
// 01100100 10000010 11001000 00000000
Color = Color << 8;
// 01100100 10000010 11001000 00000000 | 00000000 00000000 00000000 01001110 = 01100100 10000010 11001000 01001110
Color = Color | 78; // Color |= 78; 같은 코드
std::cout << Color << std::endl;
// 01100100 10000010 11001000 01001110 & 00000000 00000000 00000000 11111111 = 00000000 00000000 00000000 01001110
std::cout << "B : " << (Color & 0x000000ff) << std::endl;
// 01100100 10000010 11001000 01001110 -> 00000000 01100100 10000010 11001000 & 00000000 00000000 00000000 11111111 = 00000000 00000000 00000000 11001000
std::cout << "G : " << ((Color >> 8) & 0x000000ff) << std::endl;
std::cout << "R : " << ((Color >> 16) & 0x000000ff) << std::endl; // 0x000000ff이랑 0xff랑 같다.
std::cout << "A : " << ((Color >> 24) & 0xff) << std::endl;
int Number = 100;
Number = Number + 10;
Number += 10; // Number = Number + 10; 의 축약형
/*
분기 : 여러 경우 중 하나의 경우만 실행해주는 기능을 말한다.
if문과 switch문 2가지가 제공된다.
if(조건식)
{
실행하고자 하는 코드 작성.
}
조건식은 true 아니면 false이다.
위에서 조건식이 true라면 {}(코드블록) 안의 코드가 동작이 된다.
위에서 조건식이 false라면 {}(코드블록) 안의 코드는 무시된다.
else
{
}
else는 if문 없이 혼자서 독립적으로 사용할 수 없다.
반드시 if문과 함께 사용이 되어야 하고, if문보다는 아래에 위치해야 한다.
else는 if문의 조건이 false일 경우 동작이 되며, true일 경우 동작이 되지 않는다.
if문 1개당 else문 1개만 존재 가능하다. (없어도 된다.)
else if(조건식)
{
조건식이 true일 경우 실행할 코드.
}
else if는 혼자 독립적으로 사용할 수 없다.
반드시 if문과 함께 사용되어야 하며, if문보다 아래에 위치해야 한다.
else if는 if문의 조건이 false일 경우 else if의 조건을 체크하게 된다.
else if는 if문 1개에 여러 개의 else if가 존재할 수 있다. (없어도 된다.)
단, else가 있을 경우, else if는 else보다 위에 존재해야 한다.
if문
else if문
else문
*/
if (true)
{
std::cout << "조건이 true입니다." << std::endl;
}
else
{
std::cout << "조건이 false입니다." << std::endl;
}
/*
std::cout << "숫자를 입력하세요 : ";
std::cin >> Number;
std::cout << "Input Number : " << Number << std::endl;
(블럭처리하고 Ctrl + k + c 를 하면 해당 영역을 주석 처리, Ctrl + k + u 누르면 주석이 풀린다.)
*/
int Menu = 0;
std::cout << "1. 메뉴1" << std::endl;
std::cout << "2. 메뉴2" << std::endl;
std::cout << "3. 메뉴3" << std::endl;
std::cout << "4. 메뉴4" << std::endl;
std::cout << "메뉴를 선택하세요 : ";
std::cin >> Menu;
//if문에서 실행될 코드가 1줄이라면 {}(코드블럭)을 생략할 수 있다.
if(Menu == 1)
std::cout << "Menu 1 을 선택하였습니다." << std::endl;
else if (Menu == 2)
std::cout << "Menu 2 을 선택하였습니다." << std::endl;
else if (Menu == 3)
std::cout << "Menu 3 을 선택하였습니다." << std::endl;
else if (Menu == 4)
std::cout << "Menu 4 을 선택하였습니다." << std::endl;
else
std::cout << "잘못된 메뉴를 선택하였습니다." << std::endl;
return 0;
}
'그날의 코딩' 카테고리의 다른 글
220315_class (0) | 2022.03.15 |
---|---|
220314_class (0) | 2022.03.15 |
220307_class (0) | 2022.03.07 |
220304_code_review (0) | 2022.03.06 |
220304 (0) | 2022.03.06 |