Please note that the recommended version of Scilab is 2025.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
имеет размерыpos
y(i,j,..)
- это значение бита №pos(i,j,..)
переменнойx
.
Если
pos
скаляр:y
имеет размерыx
y(i,j,..)
- это значение бита №pos
вx(i,j,..)
.
Если
x
иpos
являются массивами одинаковых размеров, то обработка идёт поэлементно:y
имеет размерыx
иpos
y(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 >> |