C17 6.2.6.2/4 говорит:
Если реализация не поддерживает отрицательные нули, поведение операторов &, |, ^, ~, << и >> с операндами, которые могли бы создать такое значение, не определено.
Если у меня есть система с 2 дополнениями, она не поддерживает отрицательные нули. И он всегда использует все возможные комбинации двоичного числа, чтобы выразить значение. Поэтому невозможно получить отрицательный ноль независимо от того, какая битовая операция используется. Так в чем же смысл этого текста?
Я предполагаю, что эта часть относится к системам с 1 дополнением или величиной со знаком, которые не поддерживают отрицательные нули, но вместо этого используют бит дополнения или представление прерывания. Это правильно?