[왕초보 임베디드-C 공부 일기] 10. 2진수와 16진수

I. 2진수(Binary): 기계의 언어


1. 정의와 원리
   2진수는 0과 1, 단 두개의 숫자만을 사용하여 모든 데이터를 표현하는 수 체계이다. 


2. 구체적인 활용 사례 : 상태 제어(Bit Level Control)
임베디드 시스템에서 2진수는 하드웨어 핀(Pin)의 켜고 꺼짐을 직접적으로 통제할 때 사용된다. 

II. 16진수(Hexadecimal) : 엔지니어의 언어


1. 정의와 원리
   16진수는 0부터 9까지의 숫자에 더해 A부터 F까지의 알파벳(10~15를 의미)을 더해, 총 16개의 기호로 수를 표현하는 체계이다. C언어에서는 숫자 앞에 0x를 붙여서 표현한다. (예 : 0x2A)



2. 구체적인 활용 사례 : 메모리 주소와 레지스터 세팅
32비트 마이크로컨트롤러(MCU)를 다룰 때, 16진수는 절대적인 기준이 된다. 


// 기존 상태를 유지하면서 12, 13번 핀만 켠다 (OR 연산은  |  사용)
GPIO_PORT_REGISTER = GPIO_PORT_REGISTER | 0x00003000;

⬛ 요약

  1. 2진수는 전류의 흐름(ON/OFF)을 직관적으로 설정하는 물리적 최소 단위이다. 
  2. 16진수는 길고 복잡한 2진수 4개를 단 1개의 문자로 압축해 주는 가독성 최적화 도구이다. 
  3. 임베디드 코드를 작성할 때, 하드웨어 주소록(데이터 시트)은 모두 16진수로 되어 있으며, 비트를 쪼개서 제어할 때는 16진수 마스크(0x0F, 0xFF)를 빈번하게 사용하게 된다.