카테고리 없음
[펌웨어] 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 (결과)
- 따라서 내가 원하는 부분을 가져올 수 있습니다.
반응형