MoonNote

반응형
     

 

데이터 타입 3가지(숫자, 문자, 불리언)

 프로그램 언어를 사용할 때 우리는 알맞은 데이터 타입을 선택해 사용해야지 되는데요.

LabVIEW 뿐만이 아니라 대부분의 프로그램 언어들에서 공통적으로 쓰이는 기본은 "문자, 숫자, 불리언"  3가지  타입입니다. LabVIEW 같은 경우 팔레트에서 필요로 하는 데이터 타입의 컨트롤 또는 인디케이터를 끌어와서 사용하기에 데이터형에 따른 크기를 크게 고려 안 하고 쓰는 편인데요. PC의 메모리 영역을 사용하기에 알맞은 데이터 타입의 형을 지정하여 필요한만큼만 사용하는 것이 리소스 측면에서 가장 좋습니다. 기본 3가지 타입의 경우 아래의 테이블표 형태로 정리해보았습니다.

LabVIEW 기본 데이터 타입(문자, 숫자, 불리언)

  

 그럼 LabVIEW 어디에서 기본 데이터 타입과 관련된 함수가 있는가?

 

 

프런트 패널의 경우 컨트롤 팔레트 >> 일반 항목에서, 블록다이어그램의 경우 함수 팔레트 >> 프로그래밍 항목에서 기본 데이터 타입(숫자, 불리언, 문자열)과 관련된 객체 또는 함수들을 찾을 수 있습니다.

패널별 기본 데이터 3가지의 팔레트 위치

 

 

 그럼 본격적으로 LabVIEW 숫자형(Numeric) 데이터 타입에 대해 살펴보도록 하겠습니다.

 

숫자형에서 테두리 색상의 의미

 소수점까지 표현을 할 것인지 아닌지로 정수형과 실수형으로 나뉩니다. 컨트롤(또는 상수) 또는 인디케이터를 패널에 가지고 왔을 때 블록다이어그램을 보면 테두리가 파란색으로 되어있는 타입과 주황색으로 되어있는 타입으로 2가지가 있습니다. LabVIEW는 데이터 또는 와이어의 색상만 보고도 데이터 타입을 판별할 수 있는데요. 파란색의 의미는 정수형, 주황색은 실수형을 나타냅니다.

LabVIEW 정수형과 실수형 데이터

 

 

컨트롤(상수) 또는 인디케이터 생성시 기본 데이터형

블록다이어그램에서 파란색 테두리 상수를 가지고 올 경우 기본 데이터형은 I32(int32), 주황색 테두리 상수를 가지고 올 경우 데이터형은 DBL(double)로 지정되어있습니다. 숫자형 타입의 경우 우클릭 메뉴에서 사용자가 원하는 데이터형으로 변경 또는 현재 지정되어있는 데이터형을 확인하실 수 있습니다.

상수 생성시 지정되어있는 기본 데이터형

 

 

처음 소개 글에서 "LabVIEW 같은 경우 데이터형에 따른 크기를 크게 고려하지 않고 사용한다"라고 하는 부분이 이 부분인데요. 정수냐 실수냐만 따지고 와이어링을 해주면 코드가 실행 가능하기 때문에 데이터 크기를 고려하지 않고 생성하였을 때 기본 값인 I32와 DBL 데이터형을 그대로 쓰는 것입니다. 예를 들어서 0~100까지 정수만 표현하면 되는데 굳이 I32(-2,147,483,648 ~ 2,147,483,647)형으로 사용하여 메모리 크기를 더 잡아먹는 것이죠. 작은 프로그램의 경우 이런 식으로 입∙출력 값을 표현할 데이터 하나가 최적화되지 않았다 하더라도 크게 문제가 없지만, 코드가 점점 커지거나 복잡해지면서 사용하는 데이터도 더 많아질 때 이런 데이터형에 대한 리소스가 최적화를 하였을 때보다 늘어나기에 초기에 이런 사소한 것들도 고려하여 코드 작성하는 습관을 들이는 것이 좋아 보입니다.

 

 

TIP
 
 

프런트 패널에서 컨트롤 또는 인디케이터 생성시 기본 데이터형은 배정도 부동 소수(DBL)입니다.

 

 

 

데이터형별 표현 가능 범위

소개글에서 대략적으로 설명을 했지만 LabVIEW 도움말에 나와있는 데이터형별 정보를 가지고 왔습니다.
LabVIEW 도움말 : 데이터 타입 테이블

  

강제 변환점(Coercion dot)

 강제 변환점은 LabVIEW 블록다이어그램에서 나타나며 사용자가 지정한 데이터형이 아닌 LabVIEW가 자동으로 다른 형으로 변환시켰음을 나타내는 점입니다. 예시로 2가지 경우를 한번 LabVIEW로 실습해보겠습니다.

1. I16과 I8 데이터 연산

I16이랑 I8 더하기 연산

 

[더하기] 함수 입력 터미널 X와 Y에 각각 I16과 I8 컨트롤을 연결해주면 I8쪽에 연결된 터미널에 강제 변환점이 생성된 것을 확인할 수 있습니다. 동일한 숫자형이지만 서로 다른 두 데이터를 연산하는 과정에서 데이터 크기가 더 큰 타입으로 자동으로 변환되는 것이죠.  만약 출력 값이 I8로 변환되고 강제 변환점도 출력 타입에 맞추어 I16이 I8로 변경된다고 생각해보면 코드가 범할 수 있는 오류 사항으로 I8이 표현할 수 있는 127보다 높은 숫자는 표현이 안되기에 LabVIEW에서 자동으로 크기가 작은 데이터를 큰 데이터 타입으로 변환시켜버리는 것이죠.

 

2. I32와 SGL 데이터 연산

I32와 SGL 더하기 연산

이번에는 X와 Y에 각각 I32와 SGL 컨트롤을 연결해주었습니다. 강제 변환점은 I32에 생성된 것을 확인할 수 있는데요. I32와 SGL 역시 4바이트 크기를 가지지만 이럴 경우 LabVIEW에서는 정수를 강제 변환하고 더하기 작업을 수행합니다. 개인적인 의견으로는 아마 소수점까지 표현하기 위한 실수형 데이터로 강제 변환하는 것이 아닌가 생각합니다.

 

강제 변환점은 LabVIEW에서 알아서 데이터형을 맞추어 주기에 코드 작성자 입장에서 편해 보이지만, 그만큼 불필요한 메모리를 할당하기 때문에 메모리 최적화 측면에서는 좋지 않습니다. 따라서 코드가 커지면 커질수록 강제 변환점도 줄이는 것이 최적화 측면에서 더 낫다고 볼 수 있겠습니다.

 

 

TIP
 
 

강제 변환점의 기본 색상은 빨간색이지만 도구 >> 옵션 >> 환경 >> 색 항목에서 기본 색 사용 체크를 해제하고 원하는 색상으로 변경 가능합니다.

 

옵션 창에서 LabVIEW 색 관련 환경 설정

 

LabVIEW 데이터 형 변환 함수들 

위에서 언급하였던 강제 변환점을 막기 위하여 LabVIEW 에서는 다양한 형변환 함수를 제공합니다.

(함수 위치 : 함수 팔레트 >> 프로그래밍 >> 숫자형 >> 변환)

 

LabVIEW 숫자형 형 변환 함수 모음

 

LabVIEW에서의 반올림 처리(IEEE Standard 754)

  컴퓨터에서 부동 소수점을 표현하는 가장 널리 쓰이는 표준 중 하나로 IEEE 754가 있습니다. LabVIEW도 IEEE 754 표준을 따르고 있는데요. IEEE 754는 ±0 등의 수와 무한, NaN 등의 기호를 표시하는 법과 이러한 수에 대한 연산을 정의하고 있습니다. 정수 또는 실수를 표현하고자해도 결국 PC에서는 0과 1로 구성된 비트의 조합으로 표현하게 됩니다. 부동 소수점은 부호(sign) 표시, 지수(exponent), 가수(fraction/mantissa) 부분으로 크게 세 부분으로 구성되어 있습니다.

 

IEEE 754 32비트 단정밀도 표현 이미지 (출처 : 위키 백과)

 

왜 IEEE 754가 널리 쓰이는지 또는 효율적인지를 설명하려면 내용이 길어지기에 해당 튜토리얼에서는 따로 다루지는 않겠습니다. 관심이 있으신 분들은 구글링으로 'IEEE 754', 'IEEE 754 인접 짝수 모드', 'IEEE 754 근사' 등을 검색하시어 부동 소수점에 대한 계산 과정을 보시면 좋을 것 같네요. 다시 LabVIEW로 돌아와서 한번 부동 소수에 대해 반올림 처리를 해보겠습니다.

 

첫번째, 지수부가 짝수인 경우에 소수점 반올림 연산 (2.4, 2.5, 2.6)

두번째, 지수부가 홀수인 경우에 소수점 반올림 연산 (3.4, 3.5, 3.6)

 

위의 결과 값에서 보는 것처럼 부동 소수를 표현할 때 가장 가까운 짝수로 변환되는 것을 볼 수 있고 이는 프로그래밍 언어의 설계나 연산 능력의 문제가 아닌 약속된 숫자 표현 자체의 한계점이라고 봐야될 것 같네요.

 

이상으로 Tutorial 03에서 데이터 기본 타입 3가지와 숫자형 데이터에 대해 알아보았습니다.

 

 

 

 

 

※ 이 글이 도움이 되었다면 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band