개발하는 기획자

반응형




안녕하세요.



임베디드 프로그래밍을 할 때 C언어에서의 진수 표현에 대해 간략하게나마 도움이 되고자 설명드리겠습니다.


ATmega128, 아두이노 등 펌웨어 코드를 찾아볼 때 쉽게 0xF1, 0b11110001과 같이 선언된 변수들을 볼 수 있는데요.


이 부분의 코드들은 모두 숫자를 나타내는 부분입니다.




다음과 같이 설명드릴 수 있을꺼 같은데요.



앞에 있는 '0x'는 진수 규칙을 표현하는 부분이고,


뒤에 붙은 값은 실제 숫자의 값을 나타내는 부분으로 구분되겠습니다.



실제 코드에서 자주 사용되는 '2진수, 10진수, 16진수' 는


해당 숫자의 영문 이니셜을 가지고 와서 사용되고 있습니다.

(2진수는 Binary, 10진수는 Decimal, 16진수는 Haxadecimal)




이해를 돕기 위해 간략하게 숫자 13을 표현하는 방법을 예를 들면,



다음 표와 같이 3가지 숫자가 모두 동일한 값을 의미하며, 10진수의 경우는 별도의 진수표현 없이 사용도 가능합니다.



특히 처음 임베디드 공부를 시작해 펌웨어 코딩을 할 때 16진수나 2진수로 표현되어 있는 코드를 접하는 경우가 많은데,


그 이유는 내부 레지스터들이 8bit로 이루어진 교육용 보드를 많이 사용하고


해당 레지스터를 설정하는 과정에서 10진수 표현방식에 비해 휠씬 직관적이고 해석이 편하다는 장점 때문으로 생각됩니다.




기본적인 내용이라 다들 알고 계시겠지만, 생각보다 후배들에게 많은 질문을 받은 부분이라 이렇게 글을 남기게 되었습니다. 그럼 이만~











반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver
-->