我正在處理代碼,要求我在MATLAB中有12位無符號整數,這也允許包裝溢出。matlab自定義12位無符號整數與包裝溢出
所以基本上我想要做這樣的事情在MATLAB:
uint12(4095) + uint12(1) // = 0
uint12(0) - uint12(1) // = 4095
我將如何實現這一目標?
注意:實際上我只需要整數數學,我不關心節省空間。我以這種方式需要它的原因是因爲所有的代碼已經結構化了。
注2:定點設計師可用。
我正在處理代碼,要求我在MATLAB中有12位無符號整數,這也允許包裝溢出。matlab自定義12位無符號整數與包裝溢出
所以基本上我想要做這樣的事情在MATLAB:
uint12(4095) + uint12(1) // = 0
uint12(0) - uint12(1) // = 4095
我將如何實現這一目標?
注意:實際上我只需要整數數學,我不關心節省空間。我以這種方式需要它的原因是因爲所有的代碼已經結構化了。
注2:定點設計師可用。
使用下面的代碼來初始化值:
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
你能舉個例子說明這是如何工作的嗎? – Ortix92
@ Ortix92。我已經更新了答案,如果你想要別的東西,請回復我。 – eulerleibniz
的例子是可用的定點設計師的許可證? – Daniel
@Daniel是的! – Ortix92