Main Content

16진수 값과 2진수 값

숫자를 16진수 값이나 2진수 값으로 표현할 수 있습니다. 일부 컨텍스트에서는 숫자를 이렇게 표현하는 것이 더 편리합니다. 예를 들어, 2진수 값을 사용하여 하드웨어 레지스터의 비트를 표현할 수 있습니다. MATLAB®에는 16진수 값과 2진수 값을 표현할 수 있는 두 가지 방법이 있습니다.

  • 리터럴로 표현. R2019b부터는 적합한 접두사를 표기법으로 사용하여 16진수 값과 2진수 값을 리터럴로 쓸 수 있습니다. 예를 들어, 0x2A는 42를 지정하는 리터럴입니다. MATLAB은 리터럴을 텍스트가 아니라 숫자로 저장합니다.

  • string형 또는 문자형 벡터로 표현. 예를 들어, 문자형 벡터 '2A'는 숫자 42를 16진수 값으로 표현합니다. 텍스트를 사용하여 16진수 값 또는 2진수 값을 표현할 때 값을 따옴표로 묶으십시오. MATLAB은 이 표현을 숫자가 아니라 텍스트로 저장합니다.

MATLAB은 숫자를 16진수 표현 및 2진수 표현 간에 변환할 수 있는 몇 가지 함수를 제공합니다.

16진수 표기법과 2진수 표기법을 사용하여 정수 쓰기

16진수 리터럴은 0x 접두사 또는 0X 접두사로 시작하는 반면, 2진수 리터럴은 0b 접두사 또는 0B 접두사로 시작합니다. MATLAB은 이 표기법으로 쓰여진 숫자를 정수로 저장합니다. 예를 들어, 다음 두 리터럴 모두 정수 42를 나타냅니다.

A = 0x2A
A = uint8
    42
B = 0b101010
B = uint8
    42

이 표기법을 사용하여 숫자를 쓸 때 따옴표를 사용하지 마십시오. 16진수 숫자를 표현하려면 0-9, A-Fa-f를 사용하십시오. 2진수 숫자를 표현하려면 01을 사용하십시오.

기본적으로 MATLAB은 숫자를 수용할 수 있는 가장 작은 부호 없는 정수형으로 해당 숫자를 저장합니다. 그러나 선택적 접미사를 사용하여 값을 저장하는 정수형을 지정할 수 있습니다.

  • 부호 없는 8비트 정수형, 16비트 정수형, 32비트 정수형 및 64비트 정수형을 지정하려면 접미사 u8, u16, u32, u64를 사용하십시오.

  • 부호 있는 8비트 정수형, 16비트 정수형, 32비트 정수형 및 64비트 정수형을 지정하려면 접미사 s8, s16, s32, s64를 사용하십시오.

예를 들어, 부호 있는 32비트 정수로 저장할 16진수 리터럴을 써보겠습니다.

A = 0x2As32
A = int32
    42

부호 있는 정수형을 지정할 경우 음수를 나타내는 리터럴을 쓸 수 있습니다. 2의 보수 형식으로 음수를 표현하십시오. 예를 들어, s8 접미사를 사용하여 리터럴로 음수를 지정해 보겠습니다.

A = 0xFFs8
A = int8
    -1

MATLAB은 이 리터럴을 숫자로 저장하기 때문에 숫자형 배열을 사용하는 어떤 컨텍스트나 함수에서도 이를 사용할 수 있습니다. 예를 들어, 큰 정수에 대한 정밀도 손실 없이 64비트의 부호 있는 정수형 배열을 만들 수 있습니다.

C = [0xFF000000001F123As64 0x1234FFFFFFFFFFFs64]
C = 1x2 int64 row vector

   -72057594035891654    81997179153022975

비교를 위해 int64를 사용하여 큰 정수(flintmax보다 큼)로 구성된 배열을 변환할 경우 MATLAB은 처음에는 기본적으로 숫자형 배열 입력값을 배정밀도로 나타내기 때문에 정밀도가 손실될 수 있습니다.

C_inaccurate = int64([-72057594035891654 81997179153022975])
C_inaccurate = 1x2 int64 row vector

   -72057594035891656    81997179153022976

16진수 값과 2진수 값을 텍스트로 표현하기

dec2hex 함수와 dec2bin 함수를 사용하여 정수를 16진수 값 또는 2진수 값을 나타내는 문자형 벡터로 변환할 수도 있습니다. 정수를 16진수로 변환합니다.

hexStr = dec2hex(255)
hexStr = 
'FF'

정수를 2진수로 변환합니다.

binStr = dec2bin(16)
binStr = 
'10000'

이 함수는 텍스트를 생성하므로 숫자형 값을 표현하는 텍스트가 필요할 때 사용하십시오. 예를 들어, 제목 또는 플롯 레이블에 이러한 값을 덧붙이거나 16진수 표현 또는 2진수 표현으로 숫자를 저장하는 파일에 이러한 값을 기록할 수 있습니다.

16진수 값으로 구성된 배열을 텍스트로 표현하기

숫자로 구성된 배열을 텍스트로 변환할 때는 compose 함수를 사용하는 것이 좋습니다. 이 함수는 입력 숫자형 배열과 같은 크기를 갖는 string형 배열을 반환합니다. 16진수 형식을 생성하려면 %X을 형식 지정자로 사용하십시오.

A = [255 16 12 1024 137]
A = 1×5

         255          16          12        1024         137

hexStr = compose("%X",A)
hexStr = 1x5 string
    "FF"    "10"    "C"    "400"    "89"

dec2hex 함수와 dec2bin 함수는 숫자로 구성된 배열을 16진수 값 또는 2진수 값을 나타내는 텍스트로 변환합니다. 이들 함수는 문자형 배열을 반환합니다. 여기서 각 행은 입력 숫자형 배열에 있는 수치를 나타내고 필요에 따라 0으로 채워집니다.

2진수 표현을 16진수 표현으로 변환하기

2진수 값을 16진수 값으로 변환하려면 먼저 2진수 리터럴로 표현한 후 이 리터럴을 16진수 값을 나타내는 텍스트로 변환하십시오. 리터럴은 숫자로 해석되기 때문에 리터럴을 dec2hex에 대한 입력 인수로 직접 지정할 수 있습니다.

D = 0b1111;
hexStr = dec2hex(D)
hexStr = 
'F'

16진수 리터럴로 표현한 경우 dec2bin을 사용하여 이 리터럴을 2진수 값을 나타내는 텍스트로 변환할 수 있습니다.

D = 0x8F;
binStr = dec2bin(D)
binStr = 
'10001111'

2진수 값이 포함된 비트별 연산

일반적으로 2진수 숫자는 비트를 나타낼 때 사용할 수 있습니다. 예를 들어, 많은 장치에는 메모리 내 데이터나 장치 상태를 나타내는 비트 모음에 액세스하기 위한 레지스터가 들어 있습니다. 이러한 하드웨어로 작업할 때 MATLAB의 숫자를 사용하여 레지스터 내의 값을 표현할 수 있습니다. 특정 비트를 나타내고 액세스하려면 2진수 값과 비트별 연산을 사용하십시오.

8비트 레지스터를 나타내는 숫자를 만들어 보겠습니다. 2진수 표현으로 시작하면 편리하지만 숫자가 정수로 저장됩니다.

register = 0b10010110
register = uint8
    150

특정 비트의 값을 가져오거나 설정하려면 비트별 연산을 사용하십시오. 예를 들어, bitand 함수와 bitshift 함수를 사용하여 5번째 비트의 값을 가져오겠습니다. (MATLAB이 0 또는 1을 반환하도록 해당 비트를 첫 번째 위치로 시프트합니다. 이 예제에서 5번째 비트는 1입니다.)

b5 = bitand(register,0b10000);
b5 = bitshift(b5,-4)
b5 = uint8
    1

5번째 비트를 0으로 뒤집으려면 bitset 함수를 사용하십시오.

register = bitset(register,5,0)
register = uint8
    134

register는 정수이므로 dec2bin 함수를 사용하여 모든 비트를 2진수 형식으로 표시합니다. binStr은 문자형 벡터이고 선행 0b 접두사 없이 2진수 값을 나타냅니다.

binStr = dec2bin(register)
binStr = 
'10000110'

참고 항목

| | | | | | | |

관련 항목

외부 웹사이트