Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2025.0.0 - Français


EXTRACTBITS

Extraction de bits

Aperçu

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]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

Report an issue
<< DLATCH Palette Entier INTMUL >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 24 11:16:02 CEST 2024