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