Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
bitget
Извлекает из целых чисел биты по указанным индексам
Синтаксис
y = bitget(x, pos)
Аргументы
- x
Скаляр, вектор, матрица или гиперматрица положительных десятичных или кодированных целых чисел.
- pos
Скаляр, вектор, матрица или гиперматрица десятичных или кодированных целых чисел в
[1, bitmax], гдеbitmax- это максимальный индекс битов для типа переменнойx: индексы битов, которые следует извлечь. Бит №1 - это наименьший бит (20).typeof(x) bitmax .. typeof(x) bitmax int8 7 uint8 8 int16 15 uint16 16 int32 31 uint32 32 int64 63 uint16 64 десятичное число 1024 - y
Скаляр, вектор, матрица или гиперматрица из 0 и 1 типа переменной
x. Размеры и содержимоеyследующие:Если
xскаляр:yимеет размерыposy(i,j,..)- это значение бита №pos(i,j,..)переменнойx.
Если
posскаляр:yимеет размерыxy(i,j,..)- это значение бита №posвx(i,j,..).
Если
xиposявляются массивами одинаковых размеров, то обработка идёт поэлементно:yимеет размерыxиposy(i,j,..)- это значение бита №pos(i,j,..)вx(i,j,..).
В противном случае:
y- это матрица, у которойlength(x)строк иlength(pos)столбцов.y(i,j)- это значение бита №pos(j)вx(i).
Описание
bitget() сканирует выбранные биты двоичного представления неких
положительных целых чисел x.
Эта функция возвращает 0 для снятых битов и 1 для взведённых битов.
Результат имеет размеры x или pos или обеих входных
переменных.
Однако, если и x и pos являются нескалярами и
имеют несовпадающие размеры, то результат y является матрицей, игнорирующей
размеры x. Тогда, после изменения размеров y
с помощью y = matrix(y, [size(x) -1]), значение бита №b в x(i,..,k)
будет находиться в y(i,..,k,b).
Примеры
// 19 это (10011)_2 // Второй бит равен1 (начиная с конца). x=uint8(19); pos=2; y = bitget(x,pos) expected = 1; // 13 это (1101)_2 dec2bin(13) bitget(uint8(13),4:-1:1)
С массивами и кодированными целыми числами::
С большими десятичными целыми числами > 252:
x = sum(2 .^([7 16 18 19 25 52 70]-1)) bitget(x, [7 16 18 19 35 52 70 80])
--> x = sum(2 .^([7 16 18 19 25 52 70]-1)) x = 5.903D+20 --> bitget(x, [7 16 18 19 35 52 70 80]) ans = Nan Nan 1. 1. 0. 1. 1. 0.
x и pos являются массивами несовпадающих размеров:
x = [ 39 6 62 8 14 29 4 64 12 44 39 50 52 12 39 5 4 29 ]; x = sum(2.^(x-1),2); bitget(x, [5 8 12 39])
--> bitget(x, [5 8 12 39]) ans = Nan Nan 0. 1. 0. 1. 0. 0. Nan Nan 1. 0. 0. 0. 0. 1. 0. 0. 1. 1. 1. 0. 0. 0.
Смотрите также
- bitstring — Строка, дающее символьное битовое представление числа
- dec2bin — преобразование из десятичной системы счисления в двоичную
- bitset — устанавливает в целых числах биты по указанным индексам
- bitand — bitwise logical AND between element-wise integers of 2 arrays
- & — Binary AND between integers. Logical AND over/between booleans and numbers
История
| Version | Description |
| 6.1 |
|
| Report an issue | ||
| << bitcmp | Побитовые операции | bitor >> |