본문 바로가기

cpp59

20210120(수) 삽입 정렬(Insertion Sort) 범위를 늘려가면서 검사하는 것이 특징인 정렬법. ▼ 전체 코드 #include int Compare(int lhs, int rhs); void Swap(int* lhs, int* rhs); void InsertionSwap(int* pArr, int length); void PrintArray(int* pArr, int length); int main() { int iArr[5] = { 5,4,3,2,1 }; PrintArray(iArr, 5); InsertionSwap(iArr, 5); PrintArray(iArr, 5); return (0); } int Compare(int lhs, int rhs) { return (lhs - rhs); } void Swap(i.. 2021. 1. 20.
18. 시프트 연산자(Shift Operator) 2를 곱하고 나누는 시프트 연산자 17. 비트연산자(Bitwise Operator) 에서 살펴본 비트 연산자가 { 더하기, 빼기 } 라면 시프트 연산자는 { 곱하기, 나누기 } 라고 이해하면 편하다. 시프트 연산자는 비트 연산자에 비해서 더 직관적으로 사용할 수 있다. 그저 단순히 비트의 진행 방향에 따라 자리 위치를 변경해주면 되기 때문이다. 비트의 진행 방향에 따라 빅 엔디언, 리틀 엔디언으로 나뉘는데 우리가 주변에서 흔히 볼 수 있는 64비트 컴퓨터의 CPU들은 리틀 엔디언을 사용하는 경우가 많다. 이 엔디언을 지금 바로 이해할 필요는 없지만 차이점은 이해하는 게 좋다. 네트워크를 개발할 때에는 빅 엔디언이 주를 이루기 때문에 리틀 엔디언 빅 엔디언을 구현해야하는 경우가 있다. 다시 시프트 연산자로.. 2021. 1. 20.
17. 비트연산자(Bitwise Operator) 모든 컴퓨터가 0과 1로만 계산하는 건 아니다. 여전히 거의 대부분의 컴퓨터는 0과 1만으로 모든 것을 계산한다. 거의 대부분이라 범위를 한정하는 이유는 우리나라가 3진법, 4진법을 사용하는 반도체 기술을 발표했기 때문이다. 3진법은 성균관 대학교(박진홍 교수 연구팀, 2016)에서 소자 회로 기술을 공개했고 이후 울산과학기술원(김경록 교수 연구팀, 2019)에서 실제 대면적 웨이퍼에 구현하는 데 성공했다. 4진법은 성균관 대학교(박진홍 교수 연구팀, 2019)에서 소자회로 기술을 공개했다. 하지만 우리가 주변에서 흔히 볼 수 있는 컴퓨터는 아니니 0과 1 계산을 중심으로 생각해보자. 이 0과 1만으로 이루어진 수체계를 2진수(Binary Digit)라 하는데 이를 줄여서 Bit(비트)라고 부른다. (여.. 2021. 1. 20.
5. GLM 라이브러리 적용하기 처음부터 수학 함수들을 직접 만들면서 OpenGL을 공부하는 것도 하나의 방법이지만 많은 사람들이 그래픽 프로그래밍을 제대로 맛보기도 전에 포기하는 경우가 더 많다고 한다. 외국 포럼에서도 직접 수함 함수를 구현하는 것보다도 그냥 빠르게 결과물을 보고 동작원리를 이해하는 것이 OpenGL에는 더 도움이 된다는 의견이 압도적으로 많다. 물론 OpenGL만 공부한다고 했을 때 경우를 가정했을 때라는 전제 조건이 붙는다. 그렇지 않다고 하더라도 나쁘지 않다는 의견도 많다. 결국 동작원리만 안다면 웬만한 코드들은 구현에 시간만 조금 들뿐이니까. 그러니 우리도 GLM을 사용해서 그래픽 프로그래밍을 좀 더 재밌고 편리하게 해 보자. GLM 이란? GLM(OpenGL Mathematics)는 이름 그대로 OpenGL.. 2021. 1. 19.