Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Что больше, 10^10 или long long?

#cpp


Возможно ли число 1010 засунуть в long long или не влезет?
    


Ответы

Ответ 1



Влезет, с огромным запасом. Вот, почитайте: http://en.cppreference.com/w/cpp/language/types В long long гарантированно влезают числа от -9,223,372,036,854,775,807 до 9,223,372,036,854,775,807 (т.е. ±(264-1-1) ) На абсолютном большинстве систем нижняя граница на один ниже: -9,223,372,036,854,775,808. Компилятору разрешается иметь long long еще большего размера, но в жизни я такого не видел.

Ответ 2



У типа long long нет заранее фиксированного диапазона, однако спецификация языка требует, чтобы он был не уже чем [-(263 - 1), 263 - 1]. Поэтому значение 1010 в него влезет.

Ответ 3



Размер long long - 8 байт. 8 байт = 264 бит. 1010 = 10000000000. Значение переменной типа long long может быть -263 <= x < 263. Число 263 очевидно больше, чем число 10000000000, следовательно, переменной типа long long можно присвоить значение 1010. Ответ: да.

Ответ 4



Тип long long хранит 64 битные целые числа. Поскольку старший бит используется для обозначения знака, то остаются 63 бита. Т.е. в тип long long можно записать любое число из диапазона [−263 + 1 … 263 − 1] Очевидно, что число 1010 больше нуля. Попробуем сравнить его с 263 1010 < 1610 = (24)10 = 240 < 263

Ответ 5



в любых случаях для встроенных типов просто проверьте или утвердите: assert(numeric_limits::max() > x); assert(numeric_limits::min() < x); if (numeric_limits::max() > x || numeric_limits::min() < x)) cout << "ok";

Комментариев нет:

Отправить комментарий