2016-06-13 164 views
0

我正在處理代碼,要求我在MATLAB中有12位無符號整數,這也允許包裝溢出。matlab自定義12位無符號整數與包裝溢出

所以基本上我想要做這樣的事情在MATLAB:

uint12(4095) + uint12(1) // = 0 
uint12(0) - uint12(1) // = 4095 

我將如何實現這一目標?

注意:實際上我只需要整數數學,我不關心節省空間。我以這種方式需要它的原因是因爲所有的代碼已經結構化了。

注2:定點設計師可用。

+1

的例子是可用的定點設計師的許可證? – Daniel

+0

@Daniel是的! – Ortix92

回答

0

使用下面的代碼來初始化值:

nBits = 12; % whatever you want 
value = 53; % whatever you want 
A = fi(value, 0, nBits, 0, ... 
     'OverflowAction', 'Wrap', ... 
     'SumMode', 'KeepLSB', ... 
     'SumWordLength', nBits); 

更新:行爲

isSigned = 0; % Value is Unsigned 
floatingPoints = 0; % Value is Integer 
nBits = 10; % whatever you want 
valueA = 1023; % This is Max value = 2^nBins - 1 
A = fi(valueA, isSigned, nBits, floatingPoints, ... 
     'OverflowAction', 'Wrap', ... 
     'SumMode', 'KeepLSB', ... 
     'SumWordLength', nBits); 
valueB = 0; % This is Min value 
B = fi(valueB, isSigned, nBits, floatingPoints, ... 
     'OverflowAction', 'Wrap', ... 
     'SumMode', 'KeepLSB', ... 
     'SumWordLength', nBits); 

%% Testing 
R = A + 1 % Displays R = 0 , and all it's properties => 0 is Min Value 
R = B - 1 % Displays R = 1023 , and all it's properties => 1023 = 2^nBits - 1 => Max Value 
+0

你能舉個例子說明這是如何工作的嗎? – Ortix92

+0

@ Ortix92。我已經更新了答案,如果你想要別的東西,請回復我。 – eulerleibniz