сдвиг разряда

Переключите конкретное количество битов мест

Синтаксис

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

Описание

пример

intout = bitshift(A,k) возвращает A, переключенный налево битами k, эквивалентными умножению на 2k. Отрицательные величины k соответствуют сдвигу права битов или делению на 2|k| и округление к самому близкому целому числу к отрицательной бесконечности. Любые биты переполнения являются усеченными.

  • Если A является массивом целых чисел со знаком, то bitshift возвращает результаты арифметического сдвига, сохраняя бит со знаком, когда k отрицателен, и не сохранение бита со знаком, когда k положителен.

  • Если k положителен, MATLAB® переключает биты налево и вставляет k 0 битов справа.

  • Если k отрицателен, и A является неотрицательным, то MATLAB переключает биты направо и вставляет | k | 0 битов слева.

  • Если k отрицателен, и A отрицателен, то 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))
Initial uint8 value   255 is 11111111 in binary
 for i = 1:8
    a = bitshift(a,1);
    fprintf(s2,a,dec2bin(a))
 end
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 = 1×3

   192   128     0

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

   -64  -128     0

Входные параметры

свернуть все

Входные значения, заданные как массив. A может быть скаляром или массивом, одного размера как k.

  • Если A является двойным массивом, и assumedtype не задан, то MATLAB обрабатывает A как 64-битное целое число без знака.

  • Если assumedtype задан, то все элементы в A должны иметь целочисленные значения в области значений assumedtype.

Типы данных: удвойтесь | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Количество коммутируемых битов, заданных как целочисленный или целочисленный массив. k может быть скаляром или массивом, одного размера как A.

Типы данных: удвойтесь | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Принятый тип данных A, заданного как 'uint64', 'uint32', 'uint16', 'uint8', 'int64', 'int32', 'int16' или 'int8'.

  • Если A является массивом целого типа, то assumedtype должен задать тот же самый целый тип.

  • Если A является двойным массивом, то assumedtype может задать любой допустимый целый тип.

Типы данных: char | string

Выходные аргументы

свернуть все

Переключенные значения, возвращенные как массив. intout является совпадающим типом данных как A.

  • Если A и k являются скалярами, то intout является также скаляром.

  • Если или A или k являются массивом, то intout одного размера как тот массив.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

| | | | | |

Представлено до R2006a

Была ли эта тема полезной?