안녕하세요 제타지니이고요 오늘은 변수의 자료형과 데이터형으로 다루어보겠습니다 ㅎㅎ
데이터형 함수는 메모리에 저장되어 있는 값을 해석하는 기준을 제시하기 위하여 필요합니다.
예를 들어, 65라는 값이 있다고 하면..
-정수라고 해석한다면 65라는 값이 그대로 나오겠지만,
-문자라고 해석하면, ASCII 코드 값인 'A'가 나오겠지요
즉, 동일한 값이 있다고 하더라도, 해석하는 기준에 따라 의미가 달라지겠지요
아두이노 프로그램은 C/C++에서 사용되는 데이터형과 거의 동일한 데이터형을 사용합니다.
데이터형의 함수에는 다음과 같은 것들이 있습니다.
하나하나 설명을 해보겠습니다.
boolean
-true 혹은 false 의 논리값을 저장하기 사용함
-논리값 저장은 1비트로 가능, 하지만 메모리의 최소 처리 단위는 바이트 이므로, boolean형은 1바이트 메모리를 사용
char
-하나의 문자를 저장하기 위해 사용
-1바이트의 메모리 필요
-내부적으로는 ASCII 코드 값에 해당하는 숫자로 저장됨 (-128 ~ 127로 저장)==> char 형에 대한 산술 연산 가능
ex)
char a = 'A';
char b = 65; // 'A'
char c = a + 1; // 'B'
-확장 ASCII 코드의 경우 128~255 범위의 값을 가지므로, char형을 썼을 때 예상치 못한 결과를 가져올 수 잇음
unsigned char
-부호 없는 문자형
-1바이트의 메모리 필요
-0~255 사이 숫자로 저장
-아두이노에는 unsigned char 보다 byte를 더 많이 사용
byte
-1바이트의 부호없는 숫자 데이터를 저장하기 위해 사용
-0~255 사이의 숫자 저장 가능
int
-정수형 데이터 저장
-2 바이트 크기 메모리 필요 ==>[-32,768 ~ 32,767] 사이의 값 저장 가능.
-ARM 아키텍쳐를 사용한 경우 4바이트 크기 메모리 필요 ==> [-32,768*-32,768 ~ 32.768*32,768 -1] 값을 저장 가능
-저장 가능한 최댓값이나 최솟값을 넘어서는 경우 오버플로(Overflow)나 언더플로(underflow)에 의한 롤오버 발생
오버플로 = 메모리에 표현할 수 있는 최대 값 이상을 사용했을 때 값의 넘침 문제
언더플로 = 메모리에 표현할 수 있는 최소 값 이하를 사용했을 때 값의 넘침 문제
롤오버 = 밑의 코드 참조
x = 32767;
x = x+1 ; // x = -32,768
unsigned int
-부호 없는 정수형
-'크기'를 나타내기 위함
float
-단정도 부동 소수점 방식의 실수 저장
-4바이트의 메모리 필요
-6~7 유효 자릿수를 가짐 ==> 연산 결과는 정확하지 않을 수 있음
-실수 연산은 정수 연산에 비해 연산 속도가 느리므로 시간 경과가 중요한 코드의 경우 가능한 피하는 것이 좋음
double
-배정도 부동 소수점 방식의 실수를 저장
-float와 동일한 범위의 숫자 표현 가능
<단정도 vs 배정도>
단정도 부동 소수 ==> 32비트 자료형 사용
배정도 부동 소수 ==> 64비트 자료형 사용
[기본원리] 부동소수 표현 : 정규표현과 익세스 표현
읽기전에 손가락 한번 클릭~ >_< 고마워요 ~ Chu ~ ♥ 부동 소수 표현 많은 프로그래밍 언어들은 소수 처리를 위하여 ' 배정도 부정 소수 ( doubl...
namsieon.com
이 사이트가 이해하기 쉽게 너무 잘 정리되어 있네요!
string - char 배열
-문자열 저장
ex)
char str[10]; //초기화 없음
char str1[10] = {'g', 'e', 'n', 'i', 'u', 's', '\0'}; //명시적인 NULL문자 추가
char str2[] = "genius"; //배열 크기 지정 없이 초기화
-문자열의 끝에 항상 NULL 문자를 이용하여 문자열의 끝 표시
==> 배열의 끝을 표시하기 위해 실제 문자열의 길이보다 최소한 1 크게 설정
-char형과 char배열은 각각 작은따옴표와 큰따옴표를 이용하여 초기화
ex)
char a = 'A'; //문자. 1바이트 메모리 사용
char str[] = "A"; //문자열. 2바이트 메모리 소요(NULL 문자 포함)
string
-문자열을 다루기 위한 전용 클래스
-다양한 문자열 조작 가능
-문자 배열에 비해 많은 메모리를 필요로하는 단점
<데이터 타입 재정의>
*uint_8, uint_16, uint_32 등
-숫자에서 보는 것처럼 8bit(=1byte), 16bit(=2byte), 32bit(=4byte)의 자료형을 가진다는 것
-크기를 더 디테일하게 나눌 수 있음
-크기에 따라 저장할 수 있는 값이 다른 것을 참고!
'만져보는 임베디드 시스템 > 아두이노 소프트웨어' 카테고리의 다른 글
아두이노 소프트웨어-vi. 실행 흐름 제어 (0) | 2020.12.31 |
---|---|
아두이노 소프트웨어-v.연산자 (0) | 2020.12.31 |
아두이노 소프트웨어-iv.변수 (0) | 2020.12.31 |
아두이노 소프트웨어-ii. code - 출력, main함수 (0) | 2020.12.31 |
아두이노 소프트웨어-i.아두이노 스케치 시작하기 (2) | 2020.12.05 |