# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# bitandreduce

Reduce consecutive slice of bits to one bit by performing bitwise `AND` operation

## Syntax

``c = bitandreduce(a)``
``c = bitandreduce(a, lidx)``
``c = bitandreduce(a, lidx, ridx)``

## Description

example

````c = bitandreduce(a)` performs a bitwise `AND` operation on the entire set of bits in the fixed-point input, `a`, and returns the result as an unsigned integer of word length 1.```

example

````c = bitandreduce(a, lidx)` performs a bitwise `AND` operation on a consecutive range of bits, starting at position `lidx` and ending at the LSB (the bit at position 1). ```

example

````c = bitandreduce(a, lidx, ridx)` performs a bitwise `AND` operation on a consecutive range of bits, starting at position `lidx` and ending at position `ridx`. The `bitandreduce` arguments must satisfy the following condition:```a.WordLength >= lidx >= ridx >= 1``````

## Examples

collapse all

Create a fixed-point number.

```a = fi(73,0,8,0); disp(bin(a)) ```
```01001001 ```

Perform a bitwise AND operation on the entire set of bits in `a`.

```c = bitandreduce(a) ```
```c = 0 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 1 FractionLength: 0 ```

Because the bits of `a` do not all have a value of 1, the output has a value of 0.

Create a fixed-point vector.

```a = fi([12, 4, 8, 15],0,8,0); disp(bin(a)) ```
```00001100 00000100 00001000 00001111 ```

Perform a bitwise AND operation on the bits of each element of `a`, starting at position `fi(4)`.

```c = bitandreduce(a, fi(4)) ```
```c = 0 0 0 1 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 1 FractionLength: 0 ```

The only element in output `c` with a value of 1 is the 4th element. This is because it is the only element of `a` that had only 1's between positions `fi(4)` and 1.

Create a fixed-point matrix.

```a = fi([7, 8, 1; 5, 9, 5; 8, 37, 2], 0, 8, 0); disp(bin(a)) ```
```00000111 00001000 00000001 00000101 00001001 00000101 00001000 00100101 00000010 ```

Perform a bitwise AND operation on the bits of each element of matrix `a` beginning at position 3 and ending at position 1.

```c = bitandreduce(a, 3, 1) ```
```c = 1 0 0 0 0 0 0 0 0 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 1 FractionLength: 0 ```

There is only one element in output `c` with a value of 1. This condition occurs because the corresponding element in `a` is the only element with only 1's between positions 3 and 1.

## Input Arguments

collapse all

Input array, specified as a scalar, vector, matrix, or multidimensional array of `fi` objects.

`bitandreduce` supports both signed and unsigned inputs with arbitrary scaling. The sign and scaling properties do not affect the result type and value. `bitandreduce` performs the operation on a two's complement bit representation of the stored integer.

Data Types: fixed-point `fi`

Start position of range specified as a scalar of built-in type. `lidx` represents the position in the range closest to the MSB.

Data Types: `fi`|`single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64`

End position of range specified as a scalar of built-in type. `ridx` represents the position in the range closest to the LSB (the bit at position 1).

Data Types: `fi`|`single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64`

## Output Arguments

collapse all

Output array, specified as a scalar, vector, matrix, or multidimensional array of fixed-point `fi` objects. `c` is unsigned with word length 1.