Извлекает из целых чисел биты по указанным индексам
y = bitget(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 |
Скаляр, вектор, матрица или гиперматрица из 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.
Version | Description |
6.1 |
|