반응형

보통 흔히 선언하는 int, float 등은 현재 컴퓨터의 자원을 고려하여 컴퓨터가 유동적으로 알아서 해주는데,

임베디드 시스템 등의 제한된 메모리를 갖는 MCU는 그 자원을 최대한 아껴써야 한다.

한정된 자원을 효율적으로 쓰기 위해서는 딱 맞는 메모리를 부여해야한다.

 

임의로 비트를 지정한 선언을 아래와 같이 할 수 있다.

또한 printf문으로 출력시 아래와 같이 할 수 있다.

#include <stdio.h>
#include <Stdint.h>		//메모리를 고정적으로 설정하기 위한 라이브러리.

/*
	이식성을 염두해 둔 코드를 작성할때.
	컴파일러 환경에 따라, char, short, int, long, long long 의 메모리크기가 다르게 설정될 수 있는데,
	이를 강제적으로 고정된 메모리에 할당하게 만들어주는 라이브러리.
*/

int main()
{
	int8_t num1 = -128;                    // 8비트(1바이트) 크기의 부호 있는 정수형 변수 선언
	int16_t num2 = 32767;                  // 16비트(2바이트) 크기의 부호 있는 정수형 변수 선언 
	int32_t num3 = 2147483647;             // 32비트(4바이트) 크기의 부호 있는 정수형 변수 선언
	int64_t num4 = 9223372036854775807;    // 64비트(8바이트) 크기의 부호 있는 정수형 변수 선언

														 // int8_t, int16_t, int32_t는 %d로 출력하고 int64_t는 %lld로 출력
	printf("%d %d %d %lld \n", num1, num2, num3, num4);	 // -128  /  32767  /  2147483647  /  9223372036854775807

	uint8_t num5 = 255;                      // 8비트(1바이트) 크기의 부호 없는 정수형 변수 선언
	uint16_t num6 = 65535;                   // 16비트(2바이트) 크기의 부호 없는 정수형 변수 선언
	uint32_t num7 = 4294967295;              // 32비트(4바이트) 크기의 부호 없는 정수형 변수 선언
	uint64_t num8 = 18446744073709551615;    // 64비트(8바이트) 크기의 부호 없는 정수형 변수 선언

															// uint8_t, uint16_t, uint32_t는 %u로 출력하고 uint64_t는 %llu로 출력
	printf("%u %u %u %llu \n", num5, num6, num7, num8);		// 255  /   65535  /   4294967295  /   18446744073709551615

	return 0;
}

 

 테스트 결과

 

 

 

반응형

+ Recent posts