티스토리 뷰
기존에 배웠던 stdio.h을 include하여 사용하던 C와 임베디드에서 사용하는 C언어와는 약간의 차이가 있다.
대표적인 예로, Sourcery G++ 의 gcc로는 컴파일 할 수 없는 함수가 fprintf나 sprintf
숫자를 문자열로 바꿀 때 유용한 함수인데 임베디드용(ARM) 에서는 사용할 수 없어 usnprintf를 사용한다.
또한 임베디드에서는 unsigned type을 자주 사용하고 shift 연산 과 mask 연산을 굉장히 자주 사용한다. 아무래도 비트 단위로 연산하기 때문에 '+' '-' '*' '/' 보다는 빠르기 때문이다.
그럼 unsigned type과 그냥 type(signed type)은 무슨 차이가 있을까?
아마 프로그래밍 언어 때 배웠겠지만 간단히 말하면 음수를 표현하느냐 표현하지 않느냐의 차이이다.
char형은 1 byte의 크기를 갖고 있는 자료형이다.
1byte = 8bit 즉 0000 0000 과 같이 메모리상에 저장이 되어있다.
signed type은 맨 앞의 비트가 1일 경우 음수값이 된다.
1000 0000 일 경우 -128 이다.
하지만 unsigned type은 1000 0000 일 경우 음수를 취급하지 않기 때문에 128 이다.
이것이 unsigned와 signed의 가장 큰 차이점이다. 그럼 왜 임베디드에서는 unsigned type을 사용하는가?
'Engineering > Arm Cortex' 카테고리의 다른 글
CYGWIN environment variable option "nodosfilewarning" turns off this warning (2) | 2012.05.20 |
---|---|
LM3S8962에서 OnChipDebugger(OpenOCD) 이용하기 (1) | 2010.10.12 |
댓글
01-03 00:52
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday