Почему bash возвращает необживаемое число вместо 2 ^ 64?
61
6
Я пишу простой скрипт bash для вычисления 2 ^ 63, но он возвращает -9223372036854775808 в результате! Он может правильно рассчитать 2 ^ 60. Может ли кто-нибудь объяснить, почему это происходит?
спросил(а)
2018-01-04T16:06:00+03:00
3 года, 1 месяц назад
добавить комментарий
пожаловаться
Решение
95
Bash в вашей системе использует 64-битные подписанные ints, поэтому наибольшее положительное значение равно 2 ^ 63-1.
2 ^ 63 обертывается к отрицательному и представляет наименьшее (наибольшее отрицательное значение) -2 ^ 63.
Обратите внимание на то, что в других системах Bash может не использовать 64-битные целые числа, только для man bash
"Оценка выполняется в целых числах фиксированной ширины без проверки на переполнение".
ответил(а)
2018-01-04T16:11:00+03:00
3 года, 1 месяц назад
добавить комментарий
пожаловаться
Ваш ответ
Еще в рубрике
74
AWK добавляет цифры в число, которое представляет результат команды
60
Переименование нескольких файлов в случайную строку переименовывает только один файл
73
использование bash_completion с помощью инструмента cli
86
Скрипт для выполнения параметров как команд для всех файлов каталога