본문 바로가기

<CPP>26

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.
16. 사용자 정의 자료형 C언어는 기본적으로 최소한의 자료형만을 지원한다. 이는 C언어의 특징 중 하나인 가벼움을 유지하기 위한 고육지책이다. 우리가 살아가는 이 세상에는 수많은 데이터가 있고 그 데이터마다 또 구조가 다 다르다. 이런 경우의 수를 모두 변수형으로 만들어두면 C언어의 크기가 한계 없이 커질 것이 분명했다. 대신 C에서는 기본 자료형을 확장해서 사용자 정의 자료형을 만들 수 있게 하였다. CPP 역시 C 언어를 계승하면서 이 기능을 가져왔다. (약간의 수정은 되었다.) 구조체(Structure) 구조체(Structure)라는 단어만으로 어떤 일을 하는 건지 쉽게 한 번에 이해되지 않을 것이다. 우리나라의 말로 번역되면서 조금(많이) 압축 된 느낌이 있다. ▼ 영어가 가지는 뜻을 생각해보면 쉽다. 한정된 공간에 정해.. 2021. 1. 19.
15. 동적 할당과 배열의 차이 동적 할당과 배열은 일차원보다 다차원에서 차이점을 쉽게 구분할 수 있다. 일차원은 차이가 거의 없다. 결론부터 말하면 일차원에서 동적 할당과 배열은 한가지 부분을 제외하고는 차이가 없다. 동적 할당은 선언 할 때 상수/변수 상관없이 생성할 수 있지만 배열은 상수만 된다. ▼ 일차원에서 동적 할당과 배열의 코드 #include #include int main() { const int arrMax = 5; // INIT STATIC ARRAY int iArr[arrMax] = { 0,1,2,3,4 }; // PRINT STATIC ARRAY printf("== STATIC ARRAY ==\n"); for (int i = 0; i < arrMax; i++) { printf(" iArr[%d] : %d\n", .. 2021. 1. 18.
14. 할당, 해제 C와 CPP를 사용하는 또 다른 이유인 동적 할당을 정리한다. 동적 할당은 양날의 검으로 숙련자가 사용하면 극한의 최적화를 구현할 수 있는 반면 반대의 경우는 극한의 발적화를 이룰 수 있다. 어찌 되었던 극한이란 타이틀을 얻을 수 있는 점에서 가치는 있다.(?) 동적 할당을 이해하기 위해서는 먼저 메모리 저장 공간을 이해해야 한다. 메모리 저장 공간 ▼ 메모리 저장 공간 예시 코드 #include #include // ++ Data 영역 ++ const static int gData = 1; int main() { // ++ Stack 영역 ++ int lData = 2; // ++ Heap 영역 ++ // C WAY int* dDataWithC = static_cast(malloc(sizeof(int).. 2021. 1. 15.