1

Тема: Арифметика багатократної точності

Добрий день.
Можете підсказати і допомогти бідному студенту? =)
Мені потрібно реалізувати арифметичні операції багатократної точності для 1024 бітної машини.
Наскільки зрозумів, що найкращий матеріал і що саме потрібно взяти за основу -- книга Кнута "Искусство программирования" том 2.
Усе читаю і перечитую потрібну главу міліон раз... і все ніяк не можу зрозуміти алгоритми, які там пропонують :/

Поясніть, будь ласка, алгоритми, які там описані. Або можливо хтось з Вас працював з цією темю і може щось сказати або перенаправити мене. :rolleyes:

Как видно, совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять. — Antoine de Saint-Exupéry

2

Re: Арифметика багатократної точності

Я маю деякий досвід роботи з числами, більшими за розрядність мікропроцесора.
По-перше дайте посилання на документацію вашої машини. Я Кнута не читав, каюсь :) але скажу лише одне - використовуйте Carry Flag - флаг переносу чи що воно у вас там є.

Бодай вас Бог любив, а мене – молодиці!

3

Re: Арифметика багатократної точності

Дякую, що відгукнулись =)

Якраз уся печаль ситуації в тому, що мені сказали -- зроби такі і такі операції для такої то машини, матеріал бери там то. І все! Більше нічого =( Лише натякнули, що для якоїсь системи, яка буде опитарись на ці функції.
Звичайно ми розбирали довгу арифметику, різні варіанти алгоритмів і тд, але (!) нам ніразу нічого не казали як працювати з машинами вищих розрядів і взагалі нічого на цю тему.

Тому і прошу допомоги в Вас... Зовсім розгубився з такої постановкою задачі...

Мені дуже соромно, що нічого про ці речі не знаю =( Пробачте, що такий зелений звертаюсь =(

Как видно, совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять. — Antoine de Saint-Exupéry

4

Re: Арифметика багатократної точності

Чого його губитись, коли задача нескладна.
Поясню на операції додавання. Припустимо що у нас є 8-бітна машина :) і треба додати 2 двобайтових операнди
1-й операнд = 0x01ff, 2-й операнд = 0x00f0
Спочатку додаємо молодші байти, тобто 0xff i 0xf0
В результат дорівнюватиме 0xef і встановиться флаг переносу - запишемо молодший байт результату
Наступного разу додаємо старші байти з врахуванням флагу переносу, тобто
0х01+0х00 = 0х1  результат + флаг переносу  = 0х2 - запишемо старший байт результату

Бодай вас Бог любив, а мене – молодиці!
Подякували: leofun011