Как определить, является ли шестнадцатеричное число отрицательным?

Как вы можете сказать, что 0x80000000 отрицательно? Кроме того, чтобы узнать, отрицательный он или нет, нужно ли сначала преобразовать его в двоичный файл? Пожалуйста, просветите меня об этом.

1 ответ

0x80000000 эквивалентно 0b10000000000000000000000000000000,

Я предполагаю, что вы говорите о 32-битных целых числах со знаком. Если это так, они хранятся в формате с двумя дополнениями. По сути, это означает, что первый бит указывает знак (0 для позитива, 1 для отрицательного значения), а остальные цифры обозначают фактическое число. Если знак был отрицательным, остальные биты переворачиваются, и один вычитается (потому что нет отрицательного нуля). Следовательно, этот номер (в 32-битной подписанной форме) -0b1111111111111111111111111111111, или же -2147483648,

Другие вопросы по тегам