Оцените int значение числа - PullRequest
0 голосов
/ 26 июня 2018

Что такое значение int 456789 * 456789? (обычное 32-битное представление)

edit - уточнить вопрос: что такое 4-байтовое представление значения?

1) -1,797,206,983

2) 206 656 190 521

3) 2 497 760 313

4) 350 276 665

5) Нет значения: код заканчивается сообщением об ошибке.


Я знаю, что ответ - 1. Интересно, как можно ответить на этот вопрос без калькулятора или других утилит (как в тесте)

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Мой подход при чтении вашего вопроса:

  • ответ будет больше, чем 400000 * 400000, что составляет 16 и десять нулей (этот расчет я могу сделать в своей голове), поэтому ответы 3 и 4 можно исключить.
  • Я знаю (просто потому, что я просто знаю пару общих степеней двойки), что 32-битное значение может содержать что-то вроде 4,2 млрд. Значений, поэтому ответ 2 также можно исключить, потому что значение слишком велико, чтобы вписаться в 32-битное

Так что я бы пошел на ответ 1) (не зная, является ли он правильным).

0 голосов
/ 26 июня 2018

Зависит от того, как конкретный язык управляет переполнением в операциях с типом данных, например,

  • Java ( ссылка ), C и C ++ возвращаются к минимальному значению и продолжают оттуда, возвращая -1797206983 ;
  • C # возвращает ошибку компиляции "Операция переполняется во время компиляции в проверенном режиме";
  • PHP и JavaScript (пример ниже) return 208656190521.

console.log(456789 * 456789);
...