패스트캠퍼스 챌린지 26일차
본문 바로가기
  • 게임 개발자가 되고싶은 구구
게임 개발 공부/패스트 캠퍼스 이벤트

패스트캠퍼스 챌린지 26일차

by gugu99 2021. 11. 26.
반응형

안녕하세요!

오늘도 게임개발자가 되기위해 공부하고 있는 구구입니다.

오늘은 갓생살기 26일차가 되는날입니다.

 

오늘은 어제 공부하던 비트 연산자에 대해 이어서 공부하도록 하겠습니다.

 

 

 

 

 

비트연산자의 내용들 다시한번 언급하겠습니다.

비트단위로 데이터를 처리하고 기호로는

<<, >>

를 사용합니다.

비트연산자는 2진수를 사용하게 되는데 이렇게 되면 우리가 아는 10진수를 못써서 헷갈릴 수 있습니다.

하지만 불필요한 메모리를 줄일 수 있고 연산속도가 빠르기 때문에 프로그램 최적화에 도움이 됩니다.

비트를 왼쪽으로 shift 하면 값은 2배씩 증가하며 오른쪽으로 shift하면 값은 2배씩 나눠집니다.

 

좀 더 나아가 비트논리 연산자의 경우

&, |, ^, ~

와 같은 것들이 있습니다.

 

비트연산자를 사용하기 전에 bit 와 byte에 대해 간단하게 알아보겠습니다.

1byte = 8bit

int = 4byte

 

위 관계를 생각하면서

int a = 255;

라고 코딩했다고 해봅시다.

int는 4byte이므로 이를 bit단위로 쪼개보면

00000000 00000000 00000000 11111111

과 같이 쓸 수 있습니다.

 

그래서 비트연산자를 쓰게되면

<<의 경우는 왼쪽으로 한 bit씩 움직여라 라는 뜻이고

>>의 경우 오른쪽으로 한 bit씩 움직여라 라는 뜻이 됩니다.

<< 와 >>는 shift 연산자로도 불립니다.

 

&(AND)의 경우는 예를들어

0000 0101 & 0000 1111 = 0000 0101

로 각각의 bit를 서로 AND연산 즉 둘다 1이면 1 나머지는 0을 반환하는 연산입니다.

 

|(OR)의 경우는 예를들어

0000 0101 | 0000 1111 = 0000 1111

 로 각각의 bit를 서로 OR연산 즉 둘중 하나라도 1이라면 1 나머지는 0을 반환하는 연산입니다.

 

^(XOR) 두개의 비트가 서로 다를 경우만 1을 반환하는 연산자이고

!(NOT) 보수연산, 비트 반전을 해주는 연산자입니다.

 

 

 

그 다음은 null 병합 연산자입니다.

null값을 체크하는 연산자 입니다.

 

 

C#-null병합연산자-null-?-??-병합-연산자

 

int? a = null;

위의 형태는 null 또는 int의 범위를 가질수 있다는 뜻이었습니다.

null 병합 연산자는 ??를 사용하는데

A = B ?? C

와 같은 형태로 B가 null이 아니면 B를 출력하고 B가 null이라면 C를 출력하라는 뜻입니다.

 

 

C#-null병합연산자-null-?-??-병합-연산자

 

 

다음은 연산자 우선순위입니다.

위 우선순위는 마이크로소프트의 홈페이지를 링크로 남겨두겠습니다.

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/

 

 

다만 이러한 우선순위를 많이 쓰는 것은 헷갈릴 수도 있고 복잡해서 가독성이 떨어지고

잘 만들어진 코드가 아닐 가능성이 높다고 합니다.

 

이러한 우선순위가 있다는 것은 알면 좋지만 연산을 한번에 몰아넣지말고

나누어서 해도 충분히 이러한 부분에서 문제를 느낄 부분이 크게 없다고 합니다.

만약 순서상 문제가 생길경우 괄호를 쓰거나 하는 방식으로 커버하면 좋을것 같습니다.

 

 

 

 

 

 

 

 

 

 

오늘은 여기까지 하도록하겠습니다.

 

 

 

 

 

 

 

 

https://bit.ly/3FVdhDa 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. 

반응형

댓글