EXTRACTBITS
Extraction de bits
Aperçu
Contenu
Description
Pour une entrée numérique entière, ce bloc sort une sélection contiguë de bits. L'opération peut être résumée par cette expression :
Sortie = Entrée ∧ Masque
i.e. un ET
bit à bit entre Entrée
et
Masque
un entier de même longueur que l'entrée avec les bits à
extraire positionnés à 1
et les autres positionnés à 0
.
Le paramètre Bits to Extract définit la méthode par
laquelle l'utilisateur sélectionne les bits de sortie comme résumé dans la table
suivante avec l'indice 0
celui du bit le moins significatif :
Bits à extraire | Sortie | Nombre de bits ou n° de bit |
Upper Half | Demi-partie de l'entrée qui contient les bits les plus significatifs | Ignoré |
Lower Half | Demi-partie de l'entrée qui contient les bits les moins significatifs | Ignoré |
Range from MSB | Number of Bits or Index of Bit bits d'entrée qui contiennent le bit le plus significatif. | Le nombre de bits à extraire |
Range to LSB | Number of Bits or Index of Bit bits d'entrée qui contiennent le bit le moins significatif. | Le nombre de bits à extraire |
Range of Bits | Une partie des bits de l'entrée entre les indices de bit Début
et Fin du paramètre Number of Bits or Index of Bit. |
Vecteur avec le format [Début, Fin] où Début
est le premier indice et Fin le dernier indice. |
La valeur extraite dépend du quatrième paramètre Treat Bit Field as an Integer.
0 : La sortie est directement le résultat de l'extraction.
1 : la sortie est la conversion en entier du résultat de l'extraction en accord avec le statut signé ou non signé de la valeur d'entrée.
Types de données
Le bloc supporte les types de données suivants :
Entrée : scalaire. Tout type entier de Scilab (paramètre Data Type).
Sortie : scalaire. Même type que l'entrée.
Paramètres
Data Type (3:int32, 4:int16, 5:int8, ...)
Indique le type entier des données en entrée : Entre 3 et 8.
Propriétés : Type 'vec' de taille 1.
Bits to Extract
Indique le mode d'extraction des bits à partir de la donnée d'entrée : Entre 1 et 5 (1:Demi partie haute, 2:Demi partie basse, 3:Etendue à partir du MSB, 4:Etendue à partir du LSB, 5:Etendue).
Propriétés : Type 'vec' de taille 1.
Number of Bits or Index of Bit
Quand le champ Bits to Extract est initialisé à :
1 ou 2, ce paramètre est ignoré.
3 ou 4, ce paramètre est utilisé pour déterminer le nombre de bits à extraire. Ce nombre doit être, si le type est :
int32 ou uint32 : inférieur à 32.
int16 ou uint16 : inférieur à 16,
int8 ou uint8 : inférieur à 8.
5, ce paramètre est utilisé pour déterminer l'intervalle de bits à extraire et ce doit être un vecteur de la forme
[Début, Fin]
.Début
doit être inférieur àFin
. Ces valeurs doivent être, si le type est :int32 ou uint32 : inférieures à 32.
int16 ou uint16 : inférieures à 16,
int8 ou uint8 : inférieures à 8.
Voir la description pour plus d'informations
Propriétés : Type 'vec' de taille -1.
Treat Bit Field as an Integer (0:No, 1:Yes)
Indique le mode de cadrage à utiliser sur la sélection de bits en sortie : 0 ou 1. Voir la description pour plus d'informations.
Propriétés : Type 'vec' de taille 1.
Propriétés par défaut
always active: non
direct-feedthrough: oui
zero-crossing: non
mode: non
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: non
discrete-time state: non
object discrete-time state: non
name of computational function: extract_bit_32_UH0
Exemple
Le tableau suivant présente les résultats obtenus pour le nombre 215 en fonction de plusieurs combinaisons de paramètres.
Entrée | Bits à extraire | Nombre de bits ou n° de bit | Treat Bit Field as an Integer | Sortie |
11010111 (215) | Upper Half | Ignoré | non | 01100000 (208) |
11010111 (215) | Upper Half | Ignoré | oui | 00001101 (13) |
11010111 (215) | Lower Half | Ignoré | non | 00000111 (7) |
11010111 (215) | Lower Half | Ignoré | oui | 00000111 (7) |
11010111 (215) | Range starting with MSB | 6 | non | 11010100 (212) |
11010111 (215) | Range starting with MSB | 6 | oui | 00110101 (53) |
11010111 (215) | Range starting with LSB | 6 | non | 00010111 (23) |
11010111 (215) | Range starting with LSB | 6 | oui | 00010111 (23) |
11010111 (215) | Range of bits | [ 2, 5 ] | non | 00010100 (20) |
11010111 (215) | Range of bits | [ 2, 5 ] | oui | 00000101 (5) |
11010111 (-41) | Upper half | Ignoré | non | 11010000 (-48) |
11010111 (-48) | Upper half | Ignoré | oui | 11111101 (-3) |
Dans le schéma suivant, deux chiffres décimaux sont codés sur un seul octet. Le diagramme décode l'entrée pour obtenir deux chiffres séparés.
Fonction d'interfaçage
SCI/modules/scicos_blocks/macros/IntegerOp/EXTRACTBITS.sci
Fonctions de calcul
- SCI/modules/scicos_blocks/src/c/extract_bit_32_UH0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_UH1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u32_UH1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_LH.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_MSB0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_MSB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u32_MSB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_LSB.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_RB0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_32_RB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u32_RB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_UH0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_UH1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u16_UH1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_LH.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_MSB0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_MSB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u16_MSB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_LSB.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_RB0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_16_RB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u16_RB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_UH0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_UH1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u8_UH1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_LH.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_MSB0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_MSB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u8_MSB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_LSB.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_RB0.c
- SCI/modules/scicos_blocks/src/c/extract_bit_8_RB1.c
- SCI/modules/scicos_blocks/src/c/extract_bit_u8_RB1.c
Voir aussi
- BITSET — Positionne un bit à 1
- BITCLEAR — Positionne un bit à 0
- LOGICAL_OP — Opération logique
Report an issue | ||
<< DLATCH | Palette Entier | INTMUL >> |