F&R 941

프로세서 (Processor) 종류

마이크로 컨트롤러(Micro-controller) 제한된 특수한 용도로 동작시키기 위해서 마이크로 컨트롤러라고 불리는 작고 비교적 간단한 컴퓨터가 표준 컴퓨터나 다른 디지털 시스템에 사용된다.예를 들면, 어떤 마이크로 컨트롤러는 컴퓨터에 있는 키보드나 모니터에서만 사용된다. 마이크로 컨트롤러는 명령어의 길이도 보통 4-8비트로 짧으며, 레지스터의 수도 적고 명령어 세트도 한정되어 있으며, 상대적으로 표현하면 성능은 낮으나 특정한 목적에 알맞는 성능을 갖고 있다할 수 있다.인텔이 최초로 출시한 것으로, 기존의 시스템은 CPU와 메모리(ROM, RAM 등), 기타 주변장치가 각각 별도로 되어있었으나, 이를 하나로 통합한 것. 전자식 계산기를 개발하는 일본업체에 납품하기 위해 개발되었으나 일반 목적으로 사용하..

Bus System

Bus System버스 시스템(Bus System) 버스 시스템은 어드레스 버스, 데이터 버스, 제어 신호로 구성됩니다. 해당 주소와 데이터를 버스에 싣고 제어 신호를 가하면, CPU 외부에 있는 소자의 해당 주소에 데이터를 읽거나 쓸 수 있습니다. 버스 시스템의 구성에 따라 시스템의 동작여부와 성능이 결정되므로, 아주 중요한 요소라 할 수 있다. 하버드 아키텍쳐 하버드 아키텍쳐는 명령어와 데이터 영역이 분리되어 있는 형태이다. 즉 명령어를 위한 어드레스, 데이터 버스와 데이터를 위한 어드레스, 데이터 버스가 분리되어 있는 버스 시스템을 사용한다. 명령어와 데이터의 참조를 동시에 수행할 수 있으므로, 성능 면에서 우수하지만 단점은 버스 시스템이 복잡하며, 외부 메모리가 2세트가 있어야 한다는 점이다.AR..

C언어 문법 공부 8장 [포인터 사용 용도]

7. 포인터 사용 용도지금까지 포인터에 대해 배웠습니다.그런데 이 포인터를 과연 어디에 써먹을수 있을까요? 저번 강좌에서 일반 변수를 함수 호출시 인수로 전해주면단지 변수에 들어있는 값을 복사해서 전해주는 Passing by value라는 호출 방법을 쓴다는 것을 배웠습니다. 그리고 배열의 경우 그 주소를 전해 주는 Passing by reference라는 방법을 쓴다는 것도 알았죠.그럼 일반 변수를 Passing by reference로 전해 줄수는 없을까요? 포인터를 이용하면 이것이 가능합니다. 우선 방법을 알아보기 전에 예제 하나를 보죠. /* 파일 이름 : C9-2.C프로그램 내용 : 포인터 예제. */ #include void func(int data){data=10;} void main(){ ..

C언어 문법 공부 8장 [포인터의 배열]

6. 포인터의 배열 포인터를 배열로 만들수가 있을까요? 당연히 할수 있겠죠? C로는 못하는게 없으니.. 포인터의 배열을 만드는 것은 정말 쉽습니다. 일반 변수의 배열에 대해서는 배웠는데 그거랑 똑같이 하면 되지만 단지 데이터형태와 포인터배열명 사이에 *를 넣어 주면 되죠. 그러니까 데이터형태* 포인터배열명[크기]; 이렇게 해 주면 됩니다. 예를 들어 정수 형태의 변수의 주소를 저장하는 10개의 원소를 가진 포인터배열은 int* PointerArray[10]; 이렇게 선언하죠. 2차원 배열 역시 일반 배열과 똑같지만 단지 *만 넣어 주면 되죠. 그러니까 int* PointerArray[10][10]; 이런 식으로 해 주면 되죠. 그리고 3차원 배열은 int* PointerArray[10][10][10]; ..

C언어 문법 공부 8장 [다시 한 번 포인터에 대해 정리]

5. 다시 한 번 포인터에 대해 정리 포인터에 대해 다시한번 정리를 해 보죠.우선 포인터는 변수이고, 변수 중에서도 주소를 기억시키는 변수 입니다. 포인터 선언은 데이터형태* 포인터명; 이렇게 해 주면 되고, 여기서 데이터형태는 그 포인터가 어떤 형태의 변수의 주소를 넣는 것인지를 지정하는 것이었죠? 다음으로 포인터 연산자에는 주소 연산자(&)와, 참조 연산자(*)가 있는데, 주소 연산자는 어떤 변수의 실제 주소를 얻고자 할때 사용하는 것으로 주소를 얻고자 하는 변수 앞에 붙여 주기만 하면 되고요. 참조 연산자는 포인터에 저장되어 있는 주소에 기억되어 있는 데이터를 변경시키거나 사용할때 쓰는 것으로, 포인터의 앞에 붙여 주기만 하면 됩니다. 예를 들어 int Variable; int* Pointer; 이..

C언어 문법 공부 8장 [포인터에 초기값 설정]

4. 포인터에 초기값 설정 변수는 선언시에 초기값을 줄수 있었죠?그런데 포인터도 변수이므로 당연히 초기값을 줄수 있겠죠? 포인터에 초기값을 주는 방법은 일반 변수와 똑같습니다. 그러니까 int* Pointer=1; 이렇게 하면 1이라는 주소를 초기값으로 준 것이죠. 그런데 뭔가 이상하죠? 주소는 자기 마음데로 정하는게 아니거든요. 그래서 저렇게 선언하는 사람을 '바보'라고 하죠. 일반적으로 포인터에 초기값을 줄 때는 데이터형 변수; 데이터형* 포인터이름 = &변수; 이렇게 합니다. 우선 변수를 선언하고 그 변수의 주소를 초기값으로 주는 것이죠. 예를 들어 int Variable; int* Pointer=&Variable; 이렇게 하면 Variable라는 변수의 주소가 Pointer라는 포인터에 초기값으로..

C언어 문법 공부 8장 [포인터 연산자]

3. 포인터 연산자 C언어 에서는 포인터 사용시에 사용하는 연산자가 2가지가 있습니다. 그 두가지는 기존의 비트별 논리곱 연산자인 &와 곱셈 연산자인 *입니다.포인터 연산자로 쓰일때 &는 주소 연산자라고 하고, *는 참조 연산자라고 합니다. (1) 주소 연산자주소 연산자란 어떤 변수의 주소를 얻는 연산자를 말합니다.사용법은 주소를 얻고자 하는 변수의 앞에 &를 붙여 주기만 하면 됩니다. 그러니까 포인터 = &변수; 이렇게 하면 변수의 주소가 포인터에 들어가죠. 예를 들어 int Variable=10;int *Pointer; 이렇게 두 변수를 선언했다고 할때, Pointer = &Variable; 이렇게 해 주면 Variable라는 변수의 주소가 Pointer라는 변수로 들어갑니다. 이것을 실제 메모리 상..

C언어 문법 공부 8장 [포인터는 어떻게 선언하는가]

2. 포인터는 어떻게 선언하는가 변수는 사용전에 선언을 해 주어야 합니다.포인터 역시 변수 이므로 선언을 해 주어야 하겠죠? 포인터의 선언은 다음과 같이 합니다. 데이터형태* 포인터이름; 아까 포인터는 주소를 기억시키는 변수라고 했습니다. 그런데 주소에도 종류가 있죠? 정수 형태 변수의 주소, 문자 형태 변수의 주소 등등..이런 어떤 형태의 주소인지를 지정해 주는 것이 데이터형태 입니다.만약 주소의 형태가 특별히 정해져 있지 않았다면 void를 씀니다. void를 써서 포인터를 선언하면 어떤 형태의 주소든지 넣을수 있죠.그리고 *는 그 변수가 포인터임을 알리기 위해 써 주는 것이고, 포인터이름은 그 포인터를 상징하는 심볼입니다. 예를 들어 정수 형태의 변수의 주소를 넣는 포인터는 int* Pointer;..

C언어 문법 공부 8장 [포인터란]

1. 포인터란? 포인터의 정확한 이름은 '포인터형 변수' 입니다. 그냥 줄여서 포인터라고 하는 것이죠. 그럼 여기서 포인터는 변수라는걸 아셨겠죠? 변수에는 정수 형태, 장정수, 부동 소숫점 수, 문자 형태 등등이 있습니다. 그럼 포인터는 도대체 어떤 형태 일까요?포인터는 바로 주소 형태 입니다. 그러니까 정수도 아니고,문자도 아닌 메모리의 주소를 기억시키는 변수라는 것이죠. 포인터는 변수이고, 변수 중에서도 주소를 기억시키기 위한 변수라는 것을 꼭 기억해 두시면 다음은 잘 이해가 되실 겁니다.

C언어 문법 공부 7장 [for문]

3. for문 for문은 어떤 특정 부분을 반복해서 실행할때 사용합니다.for문의 사용법은 for(수식1;조건;수식2){문장들..} 이런 구조 입니다. 수식1은 for문일 시작하기 전 한번 실행하는 것으로 보통 카운터 변수를 초기화 할때 씁니다.그리고 수식2는 for문 내의 문장들을 반복해서 실행할때마다 한번씩 실행해 주는 수식으로 보통 카운터를 증가 시키거나 감소 시킬때 사용합니다. for문은 조건이 만족할때 까지만 {}안의 문장을 반복해 실행해 줌니다.그냥 보면 저걸로 어떻게 반복문을 만들수 있는지 이해가 잘 안 가실 거지만 예제를 보시면 이해가 되실 겁니다. /* 파일 이름 : C7-11.C프로그램 내용 : for문 예제. */ #include void main(){ int i; for(i=1;i