Я получаю OverflowException, брошенный на меня, когда я не хочу их (или так я думаю). Я выполняю некоторые нечетные вычисления, где ожидаю, что значения переполняются, отбрасывая переполненные биты. Кажется, я не могу заставить это работать правильно, хотя. В основном это одна пара я и j, которая происходит, когда я перебираю огромные множества (int.MinValue для int.MaxValue).
// i and j are ints
// i is -2147483648
// j is -1
var x = i / j;
// I also tried using unchecked keyword, but it doesn't help
var x = unchecked(i / j);
Update:
Ожидаемое математическое значение -2147483648/-1 равно 2147483648. Однако этот определенный код на самом деле не пытается найти номер. Это часть серии бит-манипуляций, которые трудно понять. Честно говоря, я даже не знаю, что такое намерение, потому что я действительно не документировал этот метод, и все, что нужно, было на один день от него, чтобы поднять серьезные WTF-пузыри над моей головой. Все, что я знаю, это работает по назначению со специальным кодом, предназначенным для обработки дела.
О ожидаемом значении:
Так как int может удерживать только 2147483647 на нем max, я ожидаю сбросить значение переполнения 0.
Если я вообще что-то узнал об этом, это, вероятно, важность документации для неясных методов.