Каково минимальное значение 32-разрядного целого числа со знаком?

Какое минимальное значение 32-разрядного целого числа со знаком, является вопросом безопасности "вызов", чтобы сделать учетную запись на [этом веб-сайте] (изменить: ссылка теперь вредоносная) (не судите, я "Просто любопытно и скучно".

Я предположил, что они говорили о типичном 32-битном int, который может хранить числа размером 2,147,483,647. Но когда я попробовал -2147483647, он сказал, что у меня вопрос неправильный. Я пробовал несколько вариантов, таких как -2,147,483,647, но ничего не работает...

Я неверно истолковал вопрос или что-то не так с веб-сайтом?

PS Я также пробовал -2,147,483,648, как было предложено

Здесь изображение enter image description here

Ответ 1

Самый используемый размер целого числа - 32 бита. Последний бит используется для различения положительных и отрицательных чисел. Если последний бит НЕ установлен, то число положительное. Следовательно, максимальное положительное число 0x7FFFFFFF= (1<<31)-1= 2147483647 (последний бит не установлен).

Для отрицательных чисел широко используются две комплиментные обозначения. Вы можете идентифицировать символ положительного числа, инвертируя все его биты и добавляя 1. Таким образом, копия максимального значения 0x80000001, однако это NOT минимальное число.

Минимальное число в двух обозначениях комплиментов: 0x80000000= -2147483648. Интересный факт об этом числе состоит в том, что он равен своему собственному дополнению, то есть инвертирование всех битов приводит к 0x7FFFFFFF, и добавление 1 дает 0x80000000, которое равно исходному числу.

Более двух примечаний комплимента в wikipedia.

Ответ 2

Подписанные 32-битные целые числа могут опускаться до -2,147,483,648