IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Арифметические операции над двоичными кодами
сообщение
Сообщение #1


Гость






Дали нам тут список задачек для семестровых работ и попалась мне среди них одна, даже не знаю, чего с ней делать mega_chok.gif ...
Кто может, подскажите плз. алгоритм решения, или хотябы покажите, с чего начать

Каждое целое число x (|x|<= (2^n) - 1) задаётся булевским массивом размерности n+1: массив x[0..n] задаёт число a1*2^(n-1) + a2*2^(n-2) + ... + a(n-1)*2 + an, где ai = 1, если x[i] - true, и ai = 0, если x[i] -false, причём знак числа определяется по x[0] : знак +, если x[0] true, и знак - , если x[0] false.
По заданной функции F(x,y,z) и трём числам x,y,z (в виде булевских массивов) вычислить число U = F(x,y,z) – также в виде булевского массива. Полученное число вывести на печать. Входными данными программы являются: n и три булевских массива; выходными значениями являются U.
Функция F(x,y,z) содержит операции; для её вычисления в программе предусмотреть процедуры выполнения этих операций над булевскими векторами.

Исходные данные.
I. Функция F(x,y,z).
F(x,y,z)=((x+y)-(x+z)+(y-z)) операции (+ и -)

Пояснение.
- операция + определяется как сложение чисел по модулю 2^n;
- операция - определяется как вычитание чисел по модулю 2^n;

II. Вывод числа U – результата в виде массива булевских чисел;

III. Числовые значения: n=10

Значения булевских массивов x ,y, z произвольны.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Булевский массив - это представление числа в двоичной форме(плюс знак отдельно), n - количиство бит в числе. Этот массив можно перевести в число, сделать какие-либо операции и перевести обратно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






to Malice:
Спасибо, но это я понял...

Проблема в том, что:
- операция + определяется как сложение чисел по модулю 2^n;
- операция - определяется как вычитание чисел по модулю 2^n;

если не ошибаюсь, то сложение чисел по модулю 2^n - это xor. а вот вычитание стало проблемой...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(O_O`ps @ 23.12.2005 3:19) *

если не ошибаюсь, то сложение чисел по модулю 2^n - это xor. а вот вычитание стало проблемой...


В принципе, тогда это тоже xor будет, я подумал об этом, но решил, что врядли это имелось ввиду, иначе ответом всегда будет ноль. Поэтому предложил перевести в число и посчитать формулу как с обычными числами, тогда хоть смысл какой-то сохраняется.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.04.2025 18:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name