Я не говорю конкретно о каком-либо алгоритме или программе. Но, учитывая программы манипулирования битами и другие задачи, включающие дополнение до 2 или дополнение до 1 и т. д., что, если отрицательные числа представлены (в памяти или где-либо еще) способом, противоположным предположениям программиста. Этот сценарий вообще происходит? Если да, то как с этим можно справиться.
почему именно отрицательные числа? Положительные моменты тоже можно хранить по-разному
несколько связано stackoverflow.com/questions/70801443/…
Этот сценарий вообще происходит?
Да, до C++20 это разрешено, и в прошлом были архитектуры, которые не использовали дополнение до двух. Однако, начиная с С++ 20, представление двух дополнений является обязательным.
Если да, то как с этим можно справиться.
Не полагаясь на операции с поведением, определяемым реализацией, или утверждая, что ваш код может использоваться только в двух дополнительных архитектурах.
Это изменение приветствуется, но ИМХО лет на 30 слишком поздно.
Очень часто что-то работает на платформе иначе (ваше «и т. д.»), чем предполагал программист. Дефектное программное обеспечение откажется компилировать или не пройдёт тесты. Дефекты обрабатываются путем программирования бездефектного кода.