1

以下に示す次の宣言の使用法を教えてください。私は ada 言語の初心者です。インターネットを試してみましたが、十分に明確ではありませんでした。

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

2 に答える 2

3

Unsigned_4値 0、1、.. 14、15 を取り、ラップラウンドする「モジュラー型」です。

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

型を実装するのに必要なのは 4 ビットだけなので、それをサイズとして指定しても問題ありません (コンパイラは既にそれを明確に認識しているため、これは単なる確認仕様である可能性があります。3 ビットに収まることを望んでいて、for Unsigned_4'Size use 3;コンパイラはあなたが間違っていることを教えてくれます)。

ほとんどのコンパイラは、効率的なアクセスのために、型の値を少なくとも 1 バイトに格納する必要があります。最小サイズは、パックされたレコード (pragma Pack) で型を使用する場合に有効になります。

于 2010-04-26T10:47:56.627 に答える
1

「is mod」は、これがモジュラー タイプであることを示す Ada の言い方です。モジュラー型は、C の型と少し似unsignedています。負の値はありません。表現可能な最大値に達すると、値を追加すると 0 になります。

Ada で通常の (非モジュラー) 整数で同じことを試みると、次のようになります。constraint_error

于 2010-04-26T13:55:22.650 に答える