2010-04-26 55 views
1

任何人都可以請告訴我下面顯示的以下聲明的用法。我是ada語言的初學者。我曾嘗試過互聯網,但那不夠清楚。在ada中使用mod運算符

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

回答

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;編譯器會告訴你,你錯了)。

大多數編譯器都希望至少在一個字節中存儲該類型的值,以便高效訪問。當您在打包記錄中使用該類型時,最小大小會自動進入(pragma Pack)。

1

「is mod」是Ada的說法,這是一個modular type。模塊化類型的工作方式有點類似於C:unsigned類型:它們沒有負值,一旦達到最大可表示值,正常(非模塊化)整數在阿達,你會得到constraint_error