카테고리 없음

[펌웨어] 16진수 연산하기 - 비트 연산과 마스킹

newbeverse 2025. 1. 9. 13:07

기본적인 16진수 표현 

int hex_value	=	0xFF;
int hex_value2	=	0x2A;
    • 계산 결과 : 0xFF = (16^0 * 16) + (16^1 * 16) = 255

 

16진수 덧셈

// 먼저 16진수를 10진수로 변환
0x1A = 0001 1010 (26 in 10진수)
0x0F = 0000 1111 (15 in 10진수)

  0001 1010
+ 0000 1111
---------------
  0010 1001   // 결과 2진수
  • 내부 과정 : 16진수 ▶ 2진수의 비트 변환 ▶ 비트 합 연산 ▶ 16진수 변환

 

비트 연산시 16진수 마스킹

unsigned int value = 0xABCD1234;
unsigned int mask1 = 0xFF000000;  // 최상위 바이트 추출
unsigned int mask2 = 0x00FF0000;  // 두 번째 바이트 추출

 

  • 16진수와 비트 마스킹을 하는 과정을 설명하기 전에 변수는 위와 같이 주어집니다.
// 16진수를 2진수로 변환 과정
value:   0xABCD1234 = 1010 1011 1100 1101 0001 0010 0011 0100
mask1:   0xFF000000 = 1111 1111 0000 0000 0000 0000 0000 0000
  • 16진수의 최대값은 16이며 4비트는 2^4 으로 16을 표현할 수 있는 조건이 성립 됩니다.
  • 16진수 하나 당, 4비트가 필요합니다.
// 비트 AND 연산
   1010 1011 1100 1101 0001 0010 0011 0100  (value)
&  1111 1111 0000 0000 0000 0000 0000 0000  (mask1)
-----------------------------------------------
   1010 1011 0000 0000 0000 0000 0000 0000  (결과)
  • 따라서 내가 원하는 부분을 가져올 수 있습니다.
반응형