티스토리 뷰

Engineering/Arm Cortex

Unsigned Type

sw편한세상 2010. 7. 11. 16:33

기존에 배웠던 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을 사용하는가?

댓글
03-29 20:24
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday