2010-04-26 3 views
1

Quelqu'un peut-il s'il vous plaît me dire l'utilisation des déclarations suivantes indiquées ci-dessous.Je suis un débutant en langue ada.J'ai essayé l'Internet mais ce n'était pas assez clair.L'utilisation des opérateurs de mod en

  type Unsigned_4 is mod 2 ** 4; 
      for Unsigned_4'Size use 4; 

Répondre

3

Unsigned_4 est un "type modulaire" prenant les valeurs 0, 1, .. 14, 15, et autour d'enveloppement.

U : Unsigned_4; 
begin 
    U := Unsigned_4'Last;  -- 15 
    U := U + 1;    -- 0 

Vous avez seulement besoin 4 bits pour mettre en œuvre le type, il est donc OK pour indiquer que sa taille (je pense que cela peut être simplement une spécification de confirmation, puisque le compilateur sait clairement que déjà, si vous espériez adaptez-le en 3 bits et dites for Unsigned_4'Size use 3; le compilateur vous dirait que vous aviez tort).

La plupart des compilateurs voudront stocker les valeurs du type dans au moins un octet, pour un accès efficace. La taille minimale entre en jeu lorsque vous utilisez le type dans un enregistrement condensé (Pack pragma).

1

Le "est mod" est la manière d'Ada de dire qu'il s'agit d'un modular type. Les types modulaires fonctionnent un peu comme unsigned types dans C: Ils n'ont pas de valeurs négatives, et une fois que vous atteignez la plus grande valeur représentable, si vous en ajoutez un, vous obtiendrez 0.

Si vous deviez essayer la même chose avec un normal (non modulaire) entier dans Ada, vous obtiendriez constraint_error