以下に示す次の宣言の使用法を教えてください。私は ada 言語の初心者です。インターネットを試してみましたが、十分に明確ではありませんでした。
type Unsigned_4 is mod 2 ** 4;
for Unsigned_4'Size use 4;
以下に示す次の宣言の使用法を教えてください。私は ada 言語の初心者です。インターネットを試してみましたが、十分に明確ではありませんでした。
type Unsigned_4 is mod 2 ** 4;
for Unsigned_4'Size use 4;
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) で型を使用する場合に有効になります。
「is mod」は、これがモジュラー タイプであることを示す Ada の言い方です。モジュラー型は、C の型と少し似unsigned
ています。負の値はありません。表現可能な最大値に達すると、値を追加すると 0 になります。
Ada で通常の (非モジュラー) 整数で同じことを試みると、次のようになります。constraint_error