#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";
Комментариев нет:
Отправить комментарий