EXTRACTBITS

Block Screenshot

Contents

Palette

Description

For an integer input this block outputs a contiguous selection of bits. The operation can be
summarized by this expression:

i.e. a bitwise AND between Input and
Mask an integer of the same length as input with the bits to extract
set to 1 and the other bits set to 0.
Bits to Extract parameter defines the method by which the
user selects the output bits as summarized by the following table with index
0, as that of the least significant bit :

Bits to Extract

Output

Number of Bits or Index of Bit

Upper Half

Half of the input that contain the most significant bit

Ignored

Lower Half

Half of the input that contain the least significant bit

Ignored

Range from MSB

Number of Bits or Index of Bit bits of the input that
contain the most significant bit (MSB)

Number of bits to extract.

Range to LSB

Number of Bits or Index of Bit bits of the input that
contain the least significant bit (LSB)

Number of bits to extract.

Range of bits

Range of bits of the input between the indexes of the bits Start and
End of Number of Bits or Index of Bit parameter.

Vector with the format [Start, End] where start
the first bit index and end the last bit index.

The output value depends also on the forth parameter
Treat Bit Field as an Integer :

0 : the output is directly the result of extraction.

1 : the output is the integer conversion of the extraction
result according to the signed or non-signed status of the input.

Data types

The block supports the following types :

Input : scalar. All Scilab's integer type (Data Type parameter).

Output : same type than input.

Dialog box

Data Type (3:int32, 4:int16, 5:int8, ...)

It indicates the integer type on input: Between 3 and 8.

Properties : Type 'vec' of size 1.

Bits to Extract

It indicates the mode used to extract bits from the input data : Between 1 and 5 (1:Upper Half,
2:Lower Half, 3:Range from MSB, 4:Range to LSB, 5:Range of bits)

Properties : Type 'vec' of size 1.

Number of Bits or Index of Bit

When the Bits to Extract field is set to :

1 or 2, this parameter is ignored.

3 or 4, this parameter is used to determine the number of bits to extract. This number
must be if the type is :

int32 or uint32: positive and less than 32.

int16 or uint16: positive and less than 16.

int8 or uint8: positive and less than 8.

5, this parameter is used to determine range of bits to extract and it must have the [Start, End] form vector. Start must be less than End.
These values must be, if the type is:

int32 or uint32: positive and less than 32.

int16 or uint16: positive and less than 16.

int8 or uint8: positive and less than 8.

See description for more information

Properties : Type 'vec' of size -1.

Treat Bit Field as an Integer (0:No, 1:Yes)

0 or 1. It indicates the scaling mode to use on the output bits selection.
See description for more explanation.

Properties : Type 'vec' of size 1.

Default properties

always active: no

direct-feedthrough: yes

zero-crossing: no

mode: no

regular inputs:

- port 1 : size [1,1] / type 3

regular outputs:

- port 1 : size [1,1] / type 3

number/sizes of activation inputs: 0

number/sizes of activation outputs: 0

continuous-time state: no

discrete-time state: no

object discrete-time state: no

name of computational function:extract_bit_32_UH0

Example

In the following table, we present the results obtained for the number 215 according to several
combinations of the parameters.

Input

Bits to Extract

Number of Bits or Index of Bit

Treat Bit Field as an Integer

Output

11010111 (215)

Upper Half

Ignored

no

01100000 (208)

11010111 (215)

Upper Half

Ignored

yes

00001101 (13)

11010111 (215)

Lower Half

Ignored

no

00000111 (7)

11010111 (215)

Lower Half

Ignored

yes

00000111 (7)

11010111 (215)

Range starting with MSB

6

no

11010100 (212)

11010111 (215)

Range starting with MSB

6

yes

00110101 (53)

11010111 (215)

Range starting with LSB

6

no

00010111 (23)

11010111 (215)

Range starting with LSB

6

yes

00010111 (23)

11010111 (215)

Range of bits

[ 2, 5 ]

no

00010100 (20)

11010111 (215)

Range of bits

[ 2, 5 ]

yes

00000101 (5)

11010111 (-41)

Upper half

Ignored

no

11010000 (-48)

11010111 (-48)

Upper half

Ignored

yes

11111101 (-3)

In the following diagram, two decimal digit numbers are coded on an only byte.
The diagram decode the input to obtain two separate digits.