실수의 저장방법과 scanf
#1. 컴퓨터의 실수 저장 방법
학습목표 - 실수를 32bit IEEE형식으로 바꿀 수 있다.
컴퓨터는 자료를 기억하려면 메모리의 설정이 필요하다. 컴퓨터의 메모리는 한정되어 있기 때문에 메모리를 쓰려면 기억 공간을 설정해 주어야 한다. 메모리를 확보하기 위해서 우선 1. 변수 선언을 해주어야 한다. ex) char/short/int/long/float/double
// 이 중에 실수를 저장하는 변수는 float과 double이다.
이 때 변수는 하나 이상을 생성하게 하기 위해 이름을 넣어주어 같은 형의 변수를 구분해야 한다.
IEEE 형식에 따른 4byte 실수의 저장방법을 알아보자. 실수 7.25를 예를 들어 설명해 본다.
/*부호는 음과 양을 나타낸다. 음일 때는 1, 양일 때는 0을 갖는다.
지수부는 나타나는 값이 1.*의 형태를 갖게 만드는 지수X가 되도록 X-127이 되게 만드는 X값을 넣는다. 가수부는 1.* 형식에서 *를 넣는다.*/
!! 정규화에 무슨 수를 곱하는지가 나오도록 만들어야 한다.
0(부호)/00000000(지수부)/00000000000000000000000(가수부)에서
7.25를 EEEE형식으로 변환하면
1. 부호는 양수 임으로 ‘0’
2. 7을 2진수로 바꾸면 111(2)이고 소수점 이하 자리 0.25를 2진수로 바꾸면
0.25 * 2 = 0.5 -> 0
0.5 * 2 = 1.0 -> 1
111과 01을 합치면 111.01이다. 1.* 형식에서 111.01으로 바꿔주려면 2칸 앞으로 이동해야 하기 때문 2의 2승이 되어야 하고 X - 127이 2가 되게 하는 X는 129이므로 이것을 2진수로 고치면 10000001이다. 이것을 넣어주면,
0(부호)/00000000(지수부)/00000000000000000000000(가수부)
0(부호)/10000001(지수부)/11010000000000000000000(가수부)
nibble로 나누어 16진수로 표현하면
0100/0000/1110/1000/0000/0000/0000/0000
40 / E8 / 00 / 00
A / B / C / D 인데 Big endian 방식임으로
D / C / B / A 가 되기 때문에 값은 00 00 E8 40 이 된다.
#2. scanf의 개념과 사용
//Double형은 float형의 두 배의 용량을 가짐으로 지수부와 가수부가 영역이 늘어난다.
컴퓨터의 입력에 대하여 알아본다.
출력(output) - printf
입력(input) - scanf
우리는 대표적인 출력 명령어인 printf를 배웠고 이 시간에는 입력의 대표적인 명령어인 scanf에 대해 알아본다.
모든 값이 고정되어 버리면 수정 작업이 힘들다. 프로그램의 유연성을 위해서 scanf를 쓴다.
scanf의 입력방법
scanf("표현형식“, 입력할 곳의 주소); 를 입력하면 된다.
실습 - 양의 정수를 넣으면 해당 정수의 구구단이 표현되는 프로그램을 코딩해라)
/*간단하게 짤 수 있지만 지난 시간에 배운 것을 종합하여 iNum2를 추가하여 짜보았다.
처음에 구구단 코딩을 하면서 헤맸던 이유는 printf의 체계에 대한 정확한 구조를 이해하지 못해서이다. printf("변수를 표시할 형식 or/and 표시할 단순 정보“, 표시할 형식을 표현할 변수);
추가적으로 scanf는 scanf("변수를 입력할 형식“, 변수); scanf에서 변수를 입력할 형식은 변환 시켜서는 안된다.
*/
#3. array 배열
같은 이름을 쓰면서 여러 개의 자료를 확보하기 위해서 쓰는 것이 array이다.
int Smart[5];를 쓰면 20바이트가 확보된다. 뒤에 [정수]를 해당 형식에 곱을 한 만큼의 개수가 생성되기 때문이다.
int Smart[5]; 를 생성하여 주소를 확인해 보면 Smart[0] ~ Smart[4]가 생성되는 해당 주소는 연속으로 붙어있다는 것을 확인할 수 있다.
이 때 Smart[2]로 변수선언명령어에서 생성 변수 숫자를 바꾸면 run time error가 난다. 이것은 코드를 잘못 짰다는 표시이다. 때문에 배열을 선언할 때 주의를 해야 한다.
C는 직접적으로 CPU와 의사소통을 하기 때문에 잘못된 코딩을 하면 CPU에 영향을 줄 수 있다.
실습 - Array 배열)
int와 char형식의 변수 여러 개를 선언한 후 값을 넣고 출력해 본다.
#4. 문자열 출력
문자열(string)을 사용하는 방법을 배운다. 끝에 0이 있으면 문자열이라고 부르고 끝에 0이 없으면 문자 배열(character array)이라고 한다.
실습 - 문자열)
character함수 5개를 만들어 문자열을 출력해 본다.
//문자열 출력 표시는 %s이다. ‘s'는 string의 약자이다.
출력 양식에 ‘%s'넣은 후 출력하면 0이 나올 때까지 옆에 있는 자료를 지속적으로 출력한다.
문자배열을 쉽게 넣을 수 있는 방법은 큰 따옴표를 써서 연속된 숫자를 적어 주는 것이다. 여기서 주의할 점은 변수의 개수 -1개의 값을 넣어주어야 한다는 것이다. 마지막의 입력값은 0이 되어야 하는데 4개만 넣어주면 컴파일러에서 자동으로 마지막 문자를 0으로 처리하기 때문이다.
실습 - 문자열 값 끝에 자동적으로 “0”이 추가되는지 확인해 보고 한글 이름도 출력해 본다.
'Busan IT > 제어언어' 카테고리의 다른 글
제어문(if~else, for) (0) | 2015.02.10 |
---|---|
프로그래밍 언어의 종류와 역사 그리고 제어문(if문) (0) | 2015.02.09 |
포인터의 개념과 컴퓨터의 데이터 저장 방식 (0) | 2015.02.05 |
포인터 변수의 기초 (0) | 2015.02.04 |
제어문, 수의 표현 그리고 포인터 (0) | 2015.02.03 |