'2015/02/05'에 해당되는 글 2건

  1. 2015.02.05 LEGO - Mindstorm #2
  2. 2015.02.05 포인터의 개념과 컴퓨터의 데이터 저장 방식
Busan IT/제어기초2015. 2. 5. 17:35

Mindstorm #2

 

센서를 활용한 자동차 후방 감지센서 만들기

반응형

'Busan IT > 제어기초' 카테고리의 다른 글

회로 설계 기초(회로도를 그리기 전에 알아야 할 상식)  (0) 2015.02.09
LEGO - Mindstorm #3  (0) 2015.02.06
LEGO - Mindstorm  (0) 2015.02.04
ADC와 Lego Mindstorm  (0) 2015.02.03
마이크로 컴퓨터와 ADC & DAC  (0) 2015.02.02
Posted by newind2000
Busan IT/제어언어2015. 2. 5. 17:34

제어언어 - 포인터의 개념과 컴퓨터의 데이터 저장 방식

#1. 포인터의 개념

 

학습목표 - 포인터의 개념을 이해하고 포인터를 사용하여 값을 출력할 수 있다.

 

C에서 unsigned int uiNum; 이라는 코딩을 하게 되면, CPU에서 메모리에게 해당 형식의 변수를 만들고 메모리에 저장시키라고 명령한다. uiNum=88;의 명령어를 입력하면 uiNum88을 대입한다. 이 때 대입연산자 좌우에 형이 동등해야 대입연산자가 작동하게 된다.

 

//변수를 만들 경우 심볼 테이블을 작성하여 값을 쉽게 나타내 볼 수 있다.

//잘못된 코딩의 경우 error/warning의 메시지가 뜨는데 error시 작동이 되지 않고 //warning이 작동은 가능하되 언어에 맞지 않게 작성되었다는 코딩으로 인식한다.

//ex) int 3.9의 경우 소수점을 절삭하고 3만 표시된다.

 

unsigned int *uip;를 입력하면 unsigned int를 대상으로 하는 포인터가 된다.

uip=&uiPNum;을 입력하면 uip&uiNum 둘 다 주소를 나타내는 변수로 형이 같음으로 작동하게 된다.

// *를 적고 변수명을 적으면 주소를 저장하는 포인터 변수가 된다.

// ‘*’asterisk[as-tuh-risk]로 읽는다.



UiNumuiP의 값과 주소를 출력한다. 이 때 *uiP를 입력한다고 가정해보자. 이 때 *곱셈이 아니라 주소를 찾아가라는 뜻으로 인식된다. 이것은 통상적으로 uiPuiNum을 가르킨다고라고 말한다.

 

그러므로, *uiP를 출력하라는 말은

1. *uiP의 값(uiNum)이 나타내는 주소(uiNum의 주소)를 찾아가

2. 이 주소(uiNum의 주소)가 가지는 변수의 값(88)을 출력하라는 뜻이다.

#2. 포인터의 기본개념 복습과 캐스팅

 

학습목표 - 포인터에 대한 완전한 이해와 변수에 값 대입시 표시 방법을 원하는 대로 바꿀 수 있다.

 

실습 - 포인터의 이해)

unsigned int5개의 값을 선언한 후(90, 80, 70, 60, 50) 포인터 변수를 하나 선언하여 *uip값이 모두 선언한 unsigned int의 변수 값을 출력하도록 코딩하여라.




실습 - 캐스트 연산자를 활용한 경고 표시의 제거

1. character함수를 선언하여 255가 넘는 수를 넣고 캐스팅 연산자를 활용하여 warning을 없애본다.

2. unsigned int함수를 선언하여 16진수(12C) 넣고

 

 

//warning이 뜰 경우 사용자가 이것을 인식하고 있음을 표시하기 위해 캐스트 연산자를 사용한다.

 

캐스트 연산자는 1. 묵시적 2. 명시적 캐스팅이 있다.

1. 컴파일러에서 경고는 띄우지만 오류를 내지 않고 실행하는 경우.

2. 사용자가 캐스트 연산자를 활용하여 적어주는 것.

 

실습 - 진수 표시의 변환)

unsigned 변수를 선언하고 16진수 12C를 넣은 후 16진수로 표현해 본다.

 

 

// 16진수 uiNum = 0x12C;

// 8진수 uiNum = 012C;

#3. 컴퓨터의 데이터 저장 방법

 

학습목표 - 컴퓨터의 데이터 저장 방법을 이해한다.

 

컴퓨터는 메모리에 데이터를 어떻게 저장 하는가에 대한 학습

 

실습 - 컴퓨터의 데이터 저장 방법 이해)

16진수로 1부터 8까지의 수를 입력한 후에 2자리씩 출력하는데 매 출력마다 주소에서 1을 더하여 총 4번 출력해 본다.

 




 

컴퓨터는 빠른 산술계산을 위해서 정수는 뒤집어서 저장한다. 대신 대소비교(논리)는 느려진다. PC의 경우에는 숫자를 뒤집어서 넣고 슈퍼컴퓨터는 숫자를 그대로 집어넣는다. 산술과 논리는 양립한다.

 

컴퓨터 용어로써 숫자를 뒤집어 넣는 방식을 little endian이라고 부른다. 숫자를 그대로 넣는 방식은 big endian이라고 부른다.

 

ucP1씩 더할 때 주소에서 1byte(8bit)씩 커짐으로 16진수(4bit)를 나타내는 자리수에서는 2칸씩 이동하게 된다. 왜냐하면 변수 값에 1을 더하기 때문에

#4. IEEE 형식

 

학습목표 - IEEE를 형식에 맞게 실수를 표현할 수 있다.

 

현재 수업의 초점은 C를 바탕으로 컴퓨터에 대한 이해를 위한 수업이다.

 

float4byte의 실수를 저장하는 명령어이다. 실수를 저장하는 독특한 방법이 있다.

 



 

부호비트(1)/지수부(8)/가수부(23)

 

위와 같은 형태로 바꾸기 위해서는 정규화 과정을 거쳐야 한다.

 

부호비트는 양수일 때 0, 음수일 때 1이고

지수부는 “X-127”형태에서 지수가 1.*인 상태를 맞추기 위한 X의 값을 넣어줘야 한다.

 

 

 

 

 

 

 

 

 

반응형
Posted by newind2000