1. 개요요새 볼만한 강의나 책을 추천해달라는 얘기를 한번씩 받는데, 어떤 내용을 어디서 봤는지 헷갈리는 경우가 좀 있어서 읽은 책이나 강의에 대해 짤막하게 후기를 남기려고 한다. 참고로 나는 세상에 완벽한 책이나 강의는 없다고 생각한다.한 책을 완벽하게 외워도 다른 책을 보면 같은 내용을 다른 관점에서 다른 방향으로 설명한다.그래서 한 책을 몇번이고 읽어서 완전히 외우는 것보다 기초 강의부터 시작해서 다양한 책이나 강의를 보는게 낫다고 생각한다. 2. 강의기초개념혼자 공부하는 컴퓨터 구조 + 운영체제https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0HlC언어 문법을 한번 훑고 CS지식이 필요할 것 같아서 본 강의혹시 이 글을..
1. 개요최근 받은 질문 중 보수가 뭔지 알고 싶다는 질문이 있었다.개인적으로 개념정도만 알면 되고 자세하게 공부할 필요는 없다고 생각하지만, 마침 해당 주제에 대해 공부했던 내용이 떠올라 관련된 내용의 글을 적어본다. 2. 덧셈컴퓨터는 computer, 즉 연산을 수행하는 장치이다.그리고 컴퓨터에서 연산을 수행하는 핵심 부품은 CPU이며, 그중 ALU가 연산을 담당한다. 우리가 사용하는 컴퓨터는 디지털 컴퓨터로 0과 1로 데이터를 처리한다.그래서 10진수의 데이터를 2진수로 변환해 덧셈을 연산한다. 2진수로 5 + 3이라는 덧셈을 해보자.우선 각각의 수를 2진수로 변환한다.그 다음 뒤에서부터 한 자리씩 연산을 수행한다.이때 값이 2가되면 자리올림을 수행한다. 결과 : 2진수로는 1000, 10진수로..
1. 개요혼자 이것저것 연구하던 중 기억해두고싶은 결과가 나와 글을 남겨두려고 한다. 래퍼런스 변수는 변수에 별명을 붙여주는 것이라고 배웠다.그래서 함수의 매개변수에 주소값을 받는 것을 Pass by address, 레퍼런스 변수로 바로 참조하는걸 Call by reference로 구분한다고 배웠었다.그런데 이번에 강의를 보다 레퍼런스 변수도 어셈블리 레벨에서는 포인터와 크게 다르지 않다는 것을 들었다. 그래서 이번에는 두 방식을 비교해 보며 정말 레퍼런스 변수가 포인터와 같은 방식으로 동작하는지 알아보려고 한다. 2. 어셈블리 코드 비교레퍼런스 변수와 포인터 변수를 사용했을 때의 어셈블리 코드를 비교해 봤다. 코드 :int main() { int a = 1; // 선언부 int& ref = a; i..
1. 개요지난주에 받은 질문 중 '재귀함수 자세히 공부 안 해도 되지 않나요? 어차피 많이 안 쓴다던데'라는 질문이 있어 글을 작성한다.저 질문을 받았을 때 '재귀함수 쓰니까 공부해야된다'고 대답했다.그런데 저 질문이 무슨 맥락에서 나온건지 알고 있다.사실 재귀함수는 반복문에 비해 비효율적이고, 그래서 잘 안 쓰는 게 맞다. 그럼 저 질문이 맞는 거 아닌가?라고 생각할 수 있지만, 그래도 재귀함수는 알아야 한다.단순히 잘 쓰지 않는다는 결과만 볼게 아니라 그 과정을 이해해야 한다. 1) 재귀함수는 반복문에 비해 비효율적이기 때문에 일반적인 상황에서는 반복문을 사용한다. 2) 하지만 재귀함수를 써야 되는 상황이나 재귀함수를 쓰면 훨씬 간단하게 코드를 작성할 수 있는 경우가 있다. 3) 위와 같은 재..
1. 개요앞서 포인터에 대해 먼저 알아봤다.이번에는 배열을 배우는데 왜 포인터를 먼저 알아야 했는지, 즉 배열과 포인터가 무슨 관계인지 설명할 것이다.그리고 배열에 대해 설명하며 우리가 생각하는 배열과 실제 컴퓨터가 인식하는 배열은 어떻게 다른지를 알아보고자 한다. 2. 배열(Array)이란배열을 정의하자면 "같은 자료형의 변수들을 메모리에 연속적으로 모아놓은 구조"이다.우선 왜 이런 구조가 필요했는지 생각해 보자. 2.1. 배열이 필요한 이유우리가 변수를 선언할 때 그 변수는 메모리의 임의의 위치에 저장된다.그런데 코드를 작성할 때 연속적인 수, 예를 들어 1부터 6까지의 수를 변수에 저장하고 사용하고 싶을 때가 있다. 그럴 때 기존의 방식은 6개의 변수를 각각 선언하고..
1. 개요포인터글에서 여기까지 작성하려고 했는데, 글이 길어지니까 이해하기 어려울 것 같아서 나눠서 작성하게 됐다.이 글에서는 포인터의 몇 가지 사용방법을 설명하겠다. 2. 포인터 연산간접 참조 연산자를 사용할 때는 어떤 변수에 *기호를 붙일지 정확하게 지정해야 한다.그러지 않는다면 의도한 것과 다른 결과가 출력될 수 있다. 코드 :#include int main() { int a = 50; int* ptr = &a; printf(" ptr\t\t= %d\n", ptr); // ptr printf(" ptr + 1\t= %d\n", ptr + 1); // ptr + 1 printf(" ptr\t\t= %d\n"..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.