2014-01-21 14 views
0

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

+0

_ «Как вы можете сказать, что 0x80000000 отрицательный?» _ - вы не можете; не указывая, какую цифровую систему вы используете заранее. – CBroe

+0

Что? Не означает ли здесь 0x, что это шестнадцатеричное число? @CBroe – nexus

+0

Да, но это не то, что я имел в виду. Как и в другом ответе, «предполагая, что вы говорите о 32-битных значащих целых числах» _ ... – CBroe

ответ

1

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

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

+0

+1, хотя и не совсем корректно на двух уровнях. 0x80000000 - -2147483648. –

+0

Привет, вы сказали, что он хранится в формате 2, но вы еще не изменили его на 80000000? но просто увидев, что msd u сказал о своем отрицании? @Doorknob of Snow – nexus

+0

@nexus Вы прочитали первое предложение? – Doorknob

Смежные вопросы