Main Content

서로 다른 정수형 결합하기

개요

하나의 행렬에 서로 다른 정수형을 결합하면(예: 부호 있는 정수와 부호 없는 정수 또는 8비트 정수와 16비트 정수), MATLAB®은 모든 요소가 하나의 유형을 갖도록 하여 행렬을 반환합니다. 결과로 반환되는 행렬의 모든 요소는 입력 행렬의 가장 왼쪽 요소 데이터형으로 설정됩니다. 예를 들어, 다음 결합의 결과는 부호 있는 16비트 정수 3개로 구성된 벡터입니다.

A = [int16(450) uint8(250) int32(1000000)]
A =

  1×3 int16 row vector

     450     250   32767

서로 다른 크기의 정수형 결합의 예

다음 두 숫자를 한 번 결합한 다음 순서를 바꿉니다. 반환값은 정수가 결합되는 순서에 따라 결정됩니다. 가장 왼쪽 유형에 따라 벡터에 포함된 모든 요소의 데이터형이 결정됩니다.

A = [int16(5000) int8(50)]
A =

  1×2 int16 row vector

   5000     50
B = [int8(50) int16(5000)]
B =

  1×2 int8 row vector

    50   127

첫 번째 작업은 16비트 정수로 구성된 벡터를 반환합니다. 두 번째 작업은 8비트 정수로 구성된 벡터를 반환합니다. 요소 int16(5000)은 부호 있는 8비트 정수의 최댓값인 127로 설정됩니다.

이와 동일한 규칙이 세로 결합에 적용됩니다.

C = [int8(50); int16(5000)]
C =

  2×1 int8 column vector

    50
   127

참고

MATLAB 정수형의 최댓값과 최솟값은 intmax 함수와 intmin 함수를 사용하여 구할 수 있습니다. 부동소수점 유형의 경우에는 realmaxrealmin을 사용하십시오.

부호 있는 정수와 부호 없는 정수 결합의 예

이제, 부호 있는 정수와 부호 없는 정수를 사용하여 동일한 연습을 수행해 봅니다. 마찬가지로, 결과로 반환되는 행렬에 포함되는 모든 요소의 데이터형은 가장 왼쪽 요소에 따라 결정됩니다.

A = [int8(-100) uint8(100)]
A =

  1×2 int8 row vector

   -100    100
B = [uint8(100) int8(-100)]
B =

  1×2 uint8 row vector

   100     0

요소 int8(-100)은 더 이상 부호가 있는 정수가 아니므로 0으로 설정됩니다.

MATLAB은 요소를 하나의 결합된 배열로 결합하기 전에 각 요소를 평가합니다. 다시 말해, 다음 명령문은 두 요소를 결합하기 전에 각각 부호 있는 8비트 정수(50 그대로)와 부호 없는 8비트 정수(부호 없는 -50은 0으로 설정됨)로 평가합니다. 결합 후, 두 번째 요소는 0 값을 유지하지만 부호 없는 int8형을 가집니다.

A = [int8(50), uint8(-50)]
A =

  1×2 int8 row vector

   50    0

관련 항목