Я работаю над инструментом проверки некоторых VHDL-кодов в MATLAB/Octave. Поэтому мне нужны типы данных, которые генерируют "реальные" переполнения:
intmax('int32') + 1
ans = -2147483648
В дальнейшем было бы полезно, если бы я мог определить ширину бита переменной, но это не так важно прямо сейчас.
Когда я создаю C-образный пример, где переменная увеличивается до тех пор, пока она не станет меньше нуля, она будет вращаться во веки веков:
test = int32(2^30);
while (test > 0)
test = test + int32(1);
end
Другой подход, который я пробовал, - это обычная функция "переполнения", которая вызывалась каждый раз после изменения числа. Этот подход был болезненно медленным, неосуществимым и вообще не работал во всех случаях. Любые предложения?