84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
1

Почему числа в лиспе не ограниченны? Как они заимплементированны?

03.03.2016, 21:07. Показов 465. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно интересует имплементация чисел в лиспе. Почему они не ограниченны? Нигде не могу найти материалы о том как они работают.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2016, 21:07
Ответы с готовыми решениями:

как в Лиспе из числа ну допустим 12 сделать числа 1 и 2 или 1001 должно получится числа 1 0 0 1 т.е я их смогу обрабатывать как список -))))
Здравствуйте, простой вопрос как в Лиспе из числа ну допустим 12 сделать числа 1 и 2 или 1001...

Реализация циклов на Лиспе, Вложенные циклы на Лиспе
1)реализовать двумя способами (LET, LOOP, DO, DOTIMES) первая картинка 2)Согласно варианту...

Как исправить возникшие ошибки, и почему они возникли?
как исправить ошибку и почему она возникла? после добавления функции считывания из файла возникли...

Пагинация сайта слева, почему при скролле вверх, как сделать что бы они постепенно удалялись? Доходя до каждого id?
Здравствуйте дорогие форумчане, Произошла такая загвозка, делаю пагинацию, что при при скролле...

9
Модератор
Эксперт функциональных языков программированияЭксперт Python
36587 / 20317 / 4218
Регистрация: 12.02.2012
Сообщений: 33,614
Записей в блоге: 13
03.03.2016, 21:21 2
Я реализовывал целые как строки цифр неограниченной длины, а рациональные - как пары строк
0
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
03.03.2016, 22:05  [ТС] 3
Catstail, А можно поподробнее о реализации такой можно? Можно на коде? Или на пальцах??? Если вы не против

Добавлено через 4 минуты
Просто я пытаюсь тут мудрить с байтами, но как то не особо получается
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36587 / 20317 / 4218
Регистрация: 12.02.2012
Сообщений: 33,614
Записей в блоге: 13
03.03.2016, 22:07 4
Сложение, вычитание и умножение выполняются "столбиком" (как в школе). К примеру, складываем два числа. Берем самые младшие цифры, складываем и берем остаток по мод. 10 Это первая цифра результата. А частное от деления суммы цифр на 10 - это значение переноса. Следующую пару цифр складываем со значением переноса, делим рез. на 10 и т.д. Где-то на Форуме (в разделе C или C++) я когда-то выкладывал что-то подобное.
1
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
04.03.2016, 02:11  [ТС] 5
Catstail,
Цитата Сообщение от Catstail Посмотреть сообщение
Я реализовывал целые как строки цифр неограниченной длины, а рациональные - как пары строк
, а не сильно затратно по памяти? Каждая цифра в числе получается занимает целый байт... Или я ошибаюсь?

Добавлено через 1 час 33 минуты
Хотя, если я всё правильно понимаю, то разница всегда будет в 5 байт.

Добавлено через 15 минут
О_о перепутал байт с 4 битами, пойду ка я спать.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36587 / 20317 / 4218
Регистрация: 12.02.2012
Сообщений: 33,614
Записей в блоге: 13
04.03.2016, 06:55 6
Цитата Сообщение от Vaderkos Посмотреть сообщение
а не сильно затратно по памяти? Каждая цифра в числе получается занимает целый байт... Или я ошибаюсь?
- не ошибаетесь. Но есть и преимущество - не требуется программировать перевод в 10 сс.

Цитата Сообщение от Vaderkos Посмотреть сообщение
Хотя, если я всё правильно понимаю, то разница всегда будет в 5 байт.
- нет, если использовать систему с основанием 256, выигрыш в памяти будет существенным.
0
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
04.03.2016, 17:14  [ТС] 7
Catstail, У меня вроде бы получилось вывести способ использования одного байта для двух цифр в числе. В итоге уменьшил расход байтов в два раза. 9, 10-значное число занимает 5 байт; 7,8 -> 4 байта и так далее, но это только для [0; +infinity), для (-infinity; +infinity) размер числа будет на 1 байт больше.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36587 / 20317 / 4218
Регистрация: 12.02.2012
Сообщений: 33,614
Записей в блоге: 13
04.03.2016, 17:59 8
Vaderkos, да, так можно.
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
05.03.2016, 05:14 9
Почему же числа в лиспе неограничены? Наверно, потому что так легче жить. А то можно написать факториал:
C
1
2
3
4
5
6
int factorial(int x) {
    int i; 
    for(i=1; i<x; i++) 
        x *= i; 
    return x; 
}
и получить 14! < 0. http://stackoverflow.com/quest... -work-in-c
0
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
05.03.2016, 22:19  [ТС] 10
helter, меня больше интересует как они реализованы так что являются бесконечными
0
05.03.2016, 22:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2016, 22:19
Помогаю со студенческими работами здесь

Как суммировать числа когда они идут подряд, а не в одиночку
Ребят, я вновь обращаюсь к Вам за помощью. Помогите написать программу, желательно с комментариями....

Как ввести числа из txt, в котором они находятся на каждой строчке?
Здравствуйте)) появилась сложненькая задачка и даже я не забаненый в гугле не смог толком найти и...

Для чего нужны сужающие преобразования как они работают и на сколько они важны?
Я читаю одну книгу и застрял на одной теме &quot;Преобразования&quot;, и там есть такой вот код double х...

Как писать программы на Лиспе?
Я раньше довольно неплохо программировал на различных языках, но сейчас мне понадобилось написать...

Как правильно записать функции в ЛИСПе ?
Написать функцию, вычисляющую значение выражения. Все необходимые переменные передаются как...

Как реализованы cons ячейки в лиспе?
Являются ли cons ячейки связным списком в одну сторону?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru