[Ada] Manipulation de "Bits"
Bonsoir,
Voila j'aurais voulu savoir si en ADA la manipulation de bits était permise ?
Je m'explique mieux :
Donc, j'ai un nombre en en Base 10 : 4100, que je transforme en binaire
0001000000000100
Sur ce binaire, je fais 3 coupures :
0001 || 00 || 0000000100
Et en fait, mon objectif est de récupérer le nombre que chaque section contient. Dans cet exemple, cela serait (de droite à gauche) le : 4 , 0 et 1
Pour faire ceci, je fais :
4100 mod 1024 pour extraire le "4" (1024 car 2^10)
ensuite, je vire le 4 (pour obtenir: 0001 || 00 )
je divise donc 4100 par 1024
et ainsi de suite..
ok tout cela marche correctement, MAIS n'y a t-il pas en ADA un moyen de faire plus simple, comme par exemple en C/C++
il y a ce genre de chose
Code:
1 2 3
| droite = nombre & 1023 ;
milieu = (nombre & 3072) >> 10 ;
gauche = (nombre & 61440) >> 12 ; |
ou
Code:
1 2 3 4 5 6
| struct champ_de_bits
{
unsigned int gauche : 4; /* Premier champ : 4 bits. */
unsigned int milieu : 2; /* Deuxième champ : 2 bits. */
unsigned int droite : 10; /* Dernier champ : 10 bits. */
}; |
En ADA une instruction pareille est-elle disponible ? Si oui peut-on m'expliquer comment faire ?
D'avance merci