|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.10.2015, 05:59 | #1 |
Форумчанин
Регистрация: 27.07.2013
Сообщений: 256
|
Что происходит в памяти?
Есть код на Си:
Код:
2. Как устроить бесконечное вычисление с огромными числами? |
30.10.2015, 06:36 | #2 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
2. Копайте в сторону "длинная арифметика". Самое большое положительное число в С++, вы можете получить используя тип unsigned long. Если нужны ещё более длинные числа, тут придётся попотеть.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
30.10.2015, 06:47 | #3 |
Форумчанин
Регистрация: 27.07.2013
Сообщений: 256
|
Но, если int от -32767 до +32768, то почему тогда такие результаты?
|
30.10.2015, 07:14 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Ясно. У Вас int четырёхбайтный т.е. 32 разряда. Под конец вычислений, происходит переполнение положительной разрядной сетки. В старший разряд, заносится единица, что расценивается как отрицательный знак. Следующая итерация возведения в степень, начинает счёт с начала, т.е. с нуля.
Проставьте unsigned int, отрицательные числа исчезнут, но переход к нулю останется. Правда не на 33-й, а на 65-й итерации.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 30.10.2015 в 07:18. |
30.10.2015, 08:58 | #5 |
Форумчанин
Регистрация: 27.07.2013
Сообщений: 256
|
Код:
И код тут не оформляется, хоть я и выбирал оформление. Последний раз редактировалось Andrej_K; 30.10.2015 в 09:03. |
30.10.2015, 09:09 | #6 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
Цитата:
> а int работает в диапазоне от -32767 до +32768 >У Вас int четырёхбайтный а у тебя нет? на 286м сидишь? > Самое большое положительное число в С++, вы можете получить используя тип unsigned long ноуп. unsigned long long. > но переход к нулю останется. Правда не на 33-й, а на 65-й итерации ноуп. на 34-й. (хотя на самом деле на 33-й). printf ("%u\n", i);
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось Stilet; 30.10.2015 в 09:19. |
|
30.10.2015, 09:15 | #7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
попробуй так Код:
отрицательные исчезнут, но НОЛЬ останется.
программа — запись алгоритма на языке понятном транслятору
|
|
30.10.2015, 09:33 | #8 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Можно ещё коутом вывести. Но это С++, а не Си. Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
30.10.2015, 10:08 | #9 |
Форумчанин
Регистрация: 27.07.2013
Сообщений: 256
|
Не, я изучаю именно Си пока.
Изменил unsigned int на unsigned long — всё равно максимальное число 2147483648 Больше никак нельзя? |
30.10.2015, 10:16 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А какова задача? Тебе наверное нужно работать с длинной арифметикой?
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что происходит в коде? | Kirill3211 | C# (си шарп) | 5 | 12.12.2014 16:22 |
Что происходит с Вконтактом? | Анна-22 | Безопасность, Шифрование | 44 | 06.05.2013 10:12 |
Коварный С++. Что происходит?! | Начавший | Общие вопросы C/C++ | 3 | 07.12.2012 14:36 |
Происходит ли перераспределение памяти при присваивании динамических массивов одинаковых размеров? | chertovich | Общие вопросы Delphi | 2 | 06.10.2012 13:02 |
Что происходит с сайтами? | Smitt&Wesson | Свободное общение | 14 | 14.03.2012 11:11 |