만져보는 임베디드 시스템/아두이노 소프트웨어

아두이노 소프트웨어-iii.변수의 자료형(데이터형)

hanjinee 2020. 12. 31. 00:34

안녕하세요 제타지니이고요 오늘은 변수의 자료형과 데이터형으로 다루어보겠습니다 ㅎㅎ


데이터형 함수는 메모리에 저장되어 있는 값을 해석하는 기준을 제시하기 위하여 필요합니다.

 

예를 들어, 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)의 자료형을 가진다는 것

-크기를 더 디테일하게 나눌 수 있음

-크기에 따라 저장할 수 있는 값이 다른 것을 참고!

728x90