Почему bash возвращает необживаемое число вместо 2 ^ 64?

59
6

Я пишу простой скрипт bash для вычисления 2 ^ 63, но он возвращает -9223372036854775808 в результате! Он может правильно рассчитать 2 ^ 60. Может ли кто-нибудь объяснить, почему это происходит?

спросил(а) 2018-01-04T16:06:00+03:00 2 года, 10 месяцев назад
1
Решение
92

Bash в вашей системе использует 64-битные подписанные ints, поэтому наибольшее положительное значение равно 2 ^ 63-1.

2 ^ 63 обертывается к отрицательному и представляет наименьшее (наибольшее отрицательное значение) -2 ^ 63.

Обратите внимание на то, что в других системах Bash может не использовать 64-битные целые числа, только для man bash "Оценка выполняется в целых числах фиксированной ширины без проверки на переполнение".

ответил(а) 2018-01-04T16:11:00+03:00 2 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема