开发者

The use of mod operators in ada

开发者 https://www.devze.com 2022-12-27 23:07 出处:网络
Can anyone please tell me the usage of the following declarations shown below.I am a beginner in ada language.I had tried the internet but that was not clear enough.

Can anyone please tell me the usage of the following declarations shown below.I am a beginner in ada language.I had tried the internet but that was not clear enough.

            type Unsigned_4 is mod 2 ** 4;
   开发者_运维问答         for Unsigned_4'Size use 4;


Unsigned_4 is a "modular type" taking the values 0, 1, .. 14, 15, and wrapping round.

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

You only need 4 bits to implement the type, so it's OK to specify that as its Size (I think this may be simply a confirming spec, since the compiler clearly knows that already; if you were hoping to fit it into 3 bits and said for Unsigned_4'Size use 3; the compiler would tell you that you were wrong).

Most compilers will want to store values of the type in at least a byte, for efficient access. The minimum size comes into its own when you use the type in a packed record (pragma Pack).


The "is mod" is Ada's way of saying that this is a modular type. Modular types work a bit like unsigned types in C: They don't have negative values, and once you reach the largest representable value, if you add one you will get 0.

If you were to try the same with a normal (non-modular) integer in Ada, you'd get constraint_error

0

精彩评论

暂无评论...
验证码 换一张
取 消