Main Content

異なる整数型の組み合わせ

概要

異なる整数型 (たとえば、符号付きと符号なし、または 8 ビット整数と 16 ビット整数) を組み合わせて行列にする場合、MATLAB® が返す出力行列の要素はすべて、1 つの共通の型になります。MATLAB では、結果の行列のすべての要素が、入力行列の最も左側の要素のデータ型に設定されます。たとえば、以下の連結の結果は、3 つの 16 ビット符号付き整数のベクトルになります。

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

  1×3 int16 row vector

     450     250   32767

異なる整数サイズを組み合わせる例

次の 2 つの数値を一度連結し、次にその順序を入れ替えます。出力値は、整数を連結する順序によって変わります。最も左側の型によって、ベクトルのすべての要素のデータ型が決定されます。

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 ビット整数のベクトルを出力します。2 つ目の操作は、8 ビット整数のベクトルを出力します。要素 int16(5000) は、8 ビット符号付き整数の最大値 127 に設定されます。

縦方向の連結に対しても同様の規則が適用されます。

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

  2×1 int8 column vector

    50
   127

メモ

関数 intmaxintmin を使用して、MATLAB 整数型の最大値、最小値を見つけることができます。浮動小数点タイプの場合、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) は、符号付きではなくなるのでゼロに設定されます。

MATLAB では、各要素を配列に連結する "前に"、各要素が評価されます。つまり、次のステートメントでは、2 つの要素が連結される前に 8 ビット符号付き整数 (50 に等しい) と 8 ビット符号なし整数 (符号なしの -50 はゼロに設定される) に評価されます。連結後、2 つ目の要素ではゼロ値が保持されますが、符号なしの int8 型になります。

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

  1×2 int8 row vector

   50    0

関連するトピック