ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

bitshift

指定したビット数のシフト

構文

  • intout = bitshift(A,k)
  • intout = bitshift(A,k,assumedtype)

説明

intout = bitshift(A,k) は、A の値を k ビット左にシフトした値、つまり A に 2k を乗算した値を返します。k に負の値を指定した場合は、ビットを右にシフトする、つまり 2|k| で除算した後で、負の方向で最も近い整数に丸められます。オーバーフローしたビットはすべて切り捨てられます。

  • A が符号付き整数配列の場合、bitshift は算術シフト結果を返します。このとき、k が負の場合は符号付きビットを保持し、k が正の場合は符号付きビットを保持しません。

  • k が正の場合、MATLAB® はビットを左にシフトし、右に k 個の 0 ビットを挿入します。

  • k が負で、A が非負の場合、MATLAB はビットを右にシフトし、左に |k| 個の 0 ビットを挿入します。

  • kA が負の場合、MATLAB はビットを右にシフトし、左に |k| 個の 1 ビットを挿入します。

intout = bitshift(A,k,assumedtype) は、A のデータ型が assumedtype であることを仮定しています。

すべて折りたたむ

符号なし 8 ビット値のビットを、すべての非ゼロ ビットがオーバーフローするまで順次左にシフトします。

a = intmax('uint8');
s1 = 'Initial uint8 value %5d is %08s in binary\n';
s2 = 'Shifted uint8 value %5d is %08s in binary\n';
fprintf(s1,a,dec2bin(a))
 for i = 1:8
    a = bitshift(a,1);
    fprintf(s2,a,dec2bin(a))
 end
Initial uint8 value   255 is 11111111 in binary
Shifted uint8 value   254 is 11111110 in binary
Shifted uint8 value   252 is 11111100 in binary
Shifted uint8 value   248 is 11111000 in binary
Shifted uint8 value   240 is 11110000 in binary
Shifted uint8 value   224 is 11100000 in binary
Shifted uint8 value   192 is 11000000 in binary
Shifted uint8 value   128 is 10000000 in binary
Shifted uint8 value     0 is 00000000 in binary

異なる整数型を想定した数値のシフトを求めます。

uintout = bitshift(6,5:7,'uint8')
uintout =

   192   128     0

intout = bitshift(6,5:7,'int8')
intout =

   -64  -128     0

入力引数

すべて折りたたむ

入力値。配列として指定します。Ak と同じサイズのスカラーまたは配列です。

  • A が double 配列で、assumedtype が指定されていない場合、MATLAB は A を符号なし 64 ビット整数として扱います。

  • assumedtype が指定されている場合、A のすべての要素は assumedtype の範囲内の整数値でなければなりません。

データ型: double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

シフトするビット数。整数または整数配列として指定します。kA と同じサイズのスカラーまたは配列です。

データ型: double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

想定される A のデータ型。'uint64''uint32''uint16''uint8''int64''int32''int16' または 'int8' のいずれかを指定します。

  • A が整数型配列の場合、assumedtype にはそれと同じ整数型を指定しなければなりません。

  • A が double 配列の場合、assumedtype には任意の有効な整数型を指定できます。

データ型: char

出力引数

すべて折りたたむ

シフト後の値。配列として返されます。intout のデータ型は A と同じです。

  • Ak がスカラーの場合は、intout もスカラーになります。

  • A または k が配列の場合、intout はその配列と同じサイズになります。

R2006a より前に導入

この情報は役に立ちましたか?