Я работаю над приложением vb.net, которому нужно сложить несколько целых чисел. Целые числа должны быть без знака и иметь длину 32 бита.
Ожидается, что целые числа будут настолько большими, что они переполнятся при сложении. Если происходит какое-либо переполнение, я не хочу сохранять какое-либо переполнение или возникать какие-либо исключения.
Например, если бы я работал с 4-битными числами, мне бы хотелось следующее поведение:
1111 + 0010 = 0001
Я пробовал следующее, чтобы увидеть, что происходит при переполнении - я получаю исключение переполнения. Есть ли какой-нибудь элегантный способ обойти это?
Dim test As UInt32 = UInt32.MaxValue
Console.WriteLine(test.ToString())
test = test + 1
Console.WriteLine(test.ToString())
В настоящее время я использую UInt32 для представления целых чисел, однако это можно изменить, если кто-то знает лучший тип.
Важно, чтобы биты переполнения не сохранялись, так как позже я захочу выполнить битовые сдвиги и т. д. для этих чисел.
Я вижу очевидное решение преобразования между UInt64 и UInt32, однако мне, возможно, придется расширить приложение в будущем, чтобы использовать 64-битные числа (поэтому было бы неплохо иметь решение, которое легко расширяется)
Заранее спасибо,
Дэйв