게임강의
각종 노하우 분류

각종 노하우 게임 개발의 기초 c/c++ 강의 - 기본1

컨텐츠 정보

본문

[출처: Gamezone]
작성자: 작성자 없음

 

안녕하세요 llafjkl입니다!!


이전 글의경우 코드 작성 후 캡쳐해서 붙혀넣기하고 글 작성했는데


캡쳐한 이미지가 다 날라가서 코드로 작성해 올립니다.


 


지난 강의 이어서 작성하겠습니다.


우선 변수의 경우 선언과 동시에 초기화를 할 수 있습니다


ex) int Number = 0;


또 변수를 선언하고 값을 대입을 안 할 경우 쓰레기 값이 들어가 있다고 합니깐 반드시 초기화를 하는것이 중요합니다.


int Number1;


그래서 이런 경우는 cin이라는 것을 활용해서 사용자가 Number1에 int의 값을 입력해서 활용하는 방법이 있습니다


std::cin >> Number1;


std::cout << Number1 << std::endl;  이렇게 말이죠


 


아 cin이란 무엇이냐


cout은 다은 값을 출력하는 함수라고 했죠? cin 반대로 해당값에다가 값을 입력하는 함수입니다.


상수


상수란 값을 바꿀 수 없는 메모리입니다.


상수를 사용할 때는 변수 타입 앞에 const를 붙여서 사용하면 됩니다.


ex) const int cNumber = 7777; 이렇게요!!


상수는 값을 바꿀 수 없기 때문에 반드시 선언과 동시에 본인이 원하는 값으로 초기화를 해놓고 사용해야 합니다.


위에 const int cNumber = 7777; 이라고 선언을 했기 때문에


밑에서 cNumber = 5000; 이라고 바꿀 수가 없어요!


연산자


연산자에는 대입 연산자, 사칙연산자, 논리연산자, 비트단위 논리연산자, 쉬프트연산자 총 5가지 연산자가 있다고 보시면 됩니다.


대입연산자


먼저 대입 연산자의 경우는 =을 뜻합니다


대입연산자의 경우에는 = 오른쪽의 값을 왼쪽으로 대입시켜줍니다


ex) int exNumber = 10000; 이렇게 말이죠


대입 연산자는 모두가 아는 거니깐 바로 넘어갈게요!


사칙연산자


다음은 사칙 연산자인데


사칙연산자는 저희가 다 아는 것처럼


+, -, *, /이 있고 % 라는 나머지 연산자가 존재합니다.


+, -, *, / 는 다들 아시다시피 더하기, 빼기, 곱하기, 나누기이고


% 의 경우에는 나머지연산자라고 11 / 3 = 3 --- 2   몫이 3 --- 나머지 2 이렇게 나오는데


이중에 나머지 2를 구하는 연산자라고 합니다.


아 그리고 사칙연산자의 우선순위는 *, / 가 +, -보다 우선순위가 높아서 먼저 연산된다고 합니다.


또 연산 시 우선순위를 위해서 괄호를 지원하는데


프로그래밍에서는 중괄호 대괄호를 지원 안 하고 소괄호( )만 지원합니다.


관계연산자


관계연산자의 부호는 : <, >, <=, >=, ==, != 가 있습니다.


왼쪽부터 작다, 크다, 작거나 같다, 크거나 같다, 같다, 다르다 순이고


프로그래밍에서의 !은 대부분 부정의 의미를 나타내니 참고해주세요


 


관계연산자의 경우에는 값 대 값을 연산하여 참/거짓이 나오게 되는 연산자라고 생각하시면 됩니다.


여기서 참/거짓이 있는데 참은 0이 아닌 모든 수를 의미하고 거짓은 0을 의미합니다


참고로 C++에서의 true는 기본으로 1로 설정되어 있습니다.


 여기서 각 부호마다 하나씩 예를 들어볼게요.


 


먼저 참/거짓을 표현하기 위해서 bool이란 변수를 사용하겠습니다.


bool Test = 1 < 2;


std::cout << "1 < 2 = " << Test << std::endl;


Test = 1 > 2;


std::cout << "1 > 2 = " << Test << std::endl;


Test = 1 <= 2;


std::cout << "1 <= 2 = " << Test << std::endl;


Test = 1 >= 2;


std::cout << "1 >= 2 = " << Test << std::endl;


Test = 1 == 2;


std::cout << "1 == 2 = " << Test << std::endl;


Test = 1 != 2;


std::cout << "1 != 2 = " << Test << std::endl;'


이렇게 선언을 했을 때 나오는 숫자를 보면


1 < 2 = 1
1 > 2 = 0
1 <= 2 = 1
1 >= 2 = 0
1 == 2 = 0
1 != 2 = 1


이렇게 나오게 됩니다.


여기서 뒤에 나오는 1은 참, 0은 거짓을 의미하니 딱 맞아떨어지네요.


논리연산자


다음으로는 논리연산자에 대하여 적어 보도록 하겠습니다.


논리연산자의 종류에는 : AND(&&), OR(||), NOT(!)이 있고


논리연산자의 경우에는 참/거짓 대 참/거짓을 연산하여 참/거짓으로 나타나게 됩니다.


AND연산자의 경우에는 둘 다 참일 때만 참이고 나머지는 거짓으로 나타냅니다.


OR연산자의 경우에는 하나라도 참이면 참이고 나머지는 거짓으로 나타냅니다.


NOT연산자의 경우에는 반대의 결과로 나타냅니다 (참은 거짓으로 거짓은 참으로)


이렇게 보기에는 헷갈리니까 한번 예로 들어볼게요


// AND연산자


std::cout << "false && false = " << (false && false) << std::endl;
std::cout << "false && true = " << (false && true) << std::endl;
std::cout << "true && false = " << (true && false) << std::endl;
std::cout << "true && true = " << (true && true) << std::endl;
// OR연산자
std::cout << "false || false = " << (false || false) << std::endl;
std::cout << "true || false = " << (true || false) << std::endl;
std::cout << "false || true = " << (false || true) << std::endl;
std::cout << "true || true = " << (true || true) << std::endl;
// !연산자
std::cout << "!false = " << !false << std::endl;
std::cout << "!true = " << !true << std::endl;


 


이렇게 출력을 하면


 


false && false = 0
false && true = 0
true && false = 0
true && true = 1



false || false = 0
true || false = 1
false || true = 1
true || true = 1



!false = 1
!true = 0


 


이렇게 나오게 됩니다!!


말 그대로 false자리에 0을 넣고, true자리에 1을 대입했을 때 그거에 대한 연산의 값을 참/거짓으로 나타내기 때문에


0 or 1로 나오게 된 겁니다.


 


다음으로 비트단위 연산자에 대해서 말씀드리기 전에


진수 변환에 대해서 적어보도록 하겠습니다.


진수변환


우선 진수의 경우에는 2진수, 8진수, 10진수, 16진수로 이루어져 있는데 보통 2, 10, 16진수를 사용합니다.


2진수의 경우에는 0, 1   2가지로 구성되는 진수입니다.


10진수의 경우에는 0 ~ 9 사이로 구성된 진수입니다


16진수의 경우에는 0 ~ 15 사이로 구성된 진수인데 단 10 ~ 15의 경우에는 a ~ f로 표현합니다.


 


각 진수마다 표현 방법이 다른데 2진수의 경우에는 앞에 0b를 붙여주고 16진수의 경우에는 0x를 붙여줍니다


ex) 0b1101111 --- 2진수


     0x6f --- 16진수


 


10진수 111을 2진수, 16진수로 변환해보겠습니다.


먼저 2진수로 변환


111 / 2 = 55 --- 1


55 / 2 = 27 --- 1


27 / 2 = 13 --- 1


13 / 2 = 6 --- 1


6 / 2 = 3 --- 0


3 / 2 = 1 --- 1


로 나누어지는데 여기서 몫부터 나머지까지 순서대로 올라가면 됩니다


1101111이 111의 2진수로 변환했을 때의 모양입니다.


여기서 16진수로 변환하는 방법은


1101111을 > 방향에서 부터 4자리씩 끊어줍니다


그럼 110 / 1111 이 되는데 앞에가 3자리니깐 맨 앞에다가 0을 임시로 붙여줍니다


(0)110 / 1111


8 421 / 8421 밑에처럼 숫자를 대입해준 다음 2진수에 1로 표현된 자리 숫자들을 다 더해줍니다


6 / 15 이걸 16진수로 표현을 하게 되면


0x6f가 됩니다. 참 쉽죠???


 


그럼 비트단위 논리연산자로 넘어가 볼까요


비트단위 논리연산자


비트단위 논리연산자는 AND(&), OR(|), NOT(~), XOR(^)로 구성되어 있습니다.


비트단위 논리연산자는 논리연산자와 다르게 값 대 값으로 연산하여 값을 나오게 하는 연산자입니다.


AND, OR, NOT은 논리연산자와 똑같은 방식으로 연산을 하는데


XOR 같은 경우는 둘이 같을 때 거짓이고 다를 때 참이 나옵니다.


비트단위 논리연산자의 연산 방법은 연산하는 값들을 2진수로 변환 후 2진수 각 자리별로 논리연산을 하는 방법입니다.


111 & 91 = 


ex)  1101111


  & 1011011


---------------


     1001011 이 나오게 되어


111 & 91 = 75가 나오게 된다.


나머지도 똑같이 연산하면 됩니다!


쉬프트연산자


다음은 쉬프트 연산자인데 쉬프트 연산자는 <<, >> 두 가지가 있습니다.


쉬프트 연산자도 값 대 값을 연산하여 값을 결과로 나오게 하는 연산자입니다


쉬프트 연산자도 2진수 단위의 연산을 처리한다고 하네요


위에서 111을 2진수로 바꾸면 1101111이 나오는데


111 << 2 = 의 경우를 예로 들면 


1101111에서 오른쪽에 0 두 개를 붙이라는 의미이다 그러면


110111100이 되는데 이걸 10진수로 계산을 하면 444가 된다


11 << 3 = 의 경우는


1101111000이 되는데 이걸 10진수로 계산을 하면 888이 된다


반대로 11 >> 2 = 의 경우는


1101111에서 오른쪽에 0 두개를 없애라는 의미이므로


11011이 되고 즉 27이 된다


또 11 >> 3 = 의 경우는


1101이 되고 13을 의미한다.


  std::cout << "111 << 2 = " << (111 << 2) << std::endl;
std::cout << "111 << 3 = " << (111 << 3) << std::endl;

std::cout << "111 >> 2 = " << (111 >> 2) << std::endl;
std::cout << "111 >> 3 = " << (111 >> 3) << std::endl;


111 << 2 = 444
111 << 3 = 888
111 >> 2 = 27
111 >> 3 = 13


 


그럼 다음 시간에 만나요~

관련자료

댓글 0
등록된 댓글이 없습니다.
전체 422 / 1 페이지
번호
제목
이름

강의실

🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 82,042
2 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,280
3 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 32,591
4 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 23,416
6 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 22,310
7 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 13,822
8 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 13,500
9 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 13,246
10 no_profile 하늘2쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 13,239
알림 0