Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Логические действия, Алгоритмы 
:(
    Опции темы
Сый
Дата 23.2.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Вобщем, нужны алгоримты вычислений not, xor и т.д. Кто знает, поделитесь.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Romikgy
Дата 23.2.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



С помощью чего вычисления???
Имхо все процы только эти операции (почти) и прописаны


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
maxim1000
Дата 23.2.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



ну единственное, что можно предложить:
not:
Код

if(x==true)
  NOTx=false;
else
  NOTx=true;

xor:
Код

if(x==y)
  xXORy=false;
else
  xXORy=true

smile



--------------------
qqq
PM WWW   Вверх
Сый
Дата 23.2.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Я имел ввиду действия над целыми числами, без использования таблиц истинности и т.п.
Добавлено @ 16:58
Я понимаю, что для вас это в первую очередь логические действия над выражениями, дающие ключевой ответ, но для меня иначе. Я привык к НЕ, И, ИЛИ, вместо всяких and, or, not. Так что завидуйте smile
Конечно, можно осуществить эти действия на ассемблере, но мне нужны именно алгоритмы.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Romikgy
Дата 23.2.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Мож попытаться заменить делением, или его тоже нет?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Сый
Дата 23.2.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



В каком смысле "нет деления"? Есть действия ДЕЛИТЬ и ОСТАТОК (для целых чисел).
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
SoWa
Дата 23.2.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Ложить в некоторые регистры единицу или ноль. true- 1; false- 2;
Алгоритм привел maxim1000.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Jilian
Дата 23.2.2006, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 24.1.2005
Где: Минск

Репутация: нет
Всего: нет



Эти все алгоритмы описаны в книге Юрова. Её можно скачать.
PM MAIL   Вверх
Сый
Дата 23.2.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Какие регистры, какое false и true? Я же сказал, без использования ассемблера и таблиц истинности.
А книжку надо будет поискать...
Добавлено @ 23:06
Я бы с таблицами сделал, да вот если 0 и 0 = 0, то всё нормально, но если 0 и 0 =1, то результат таков, например: not 00000101 = 11111010 (даже калькулятор от Windows примерно такой же результат возвращает, однако он же говорит, что not 5 = -6, а значит использует какой-то другой алгоритм).
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
esperant0
Дата 23.2.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



не понял что вам нужно


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Сый
Дата 23.2.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Вобщем, чтобы not(5)=-6.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
esperant0
Дата 23.2.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(Сый @ 23.2.2006, 23:19)
Вобщем, чтобы not(5)=-6.

вроде след-ая ф-я вам подойдет


return -6


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Сый
Дата 23.2.2006, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Ну это пример привёл. Мне нужен сам алгоритм работы этой функции. Что тут непонятного?
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Romikgy
Дата 24.2.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(Сый @ 23.2.2006, 22:19 Найти цитируемый пост)
Вобщем, чтобы not(5)=-6.

здесь надо договорится о разрядности числа!

Цитата(Сый @ 23.2.2006, 18:08 Найти цитируемый пост)
Есть действия ДЕЛИТЬ и ОСТАТОК

так дели каждое число на 2 , и делай операции над остатком и результатом, будет что т типа
a=5;
if (a & 1) тото else тото
Вроде так.... ну и дальше развить можно


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Dian
Дата 24.2.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2006

Репутация: нет
Всего: 1



Поразрядные операции (not, xor) - выполняются согласно таблицам истинности над числами в двоичном виде

Поэтому и not(5) = -6 (5bit), в чем вопрос-то?
PM MAIL WWW   Вверх
Сый
Дата 24.2.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Вот, кстати, алгоритмы сдвигов (shl и shr):
Код

ЗАДАЧА вСтепень(Число, Степень: ШИРЦЕЛ): ШИРЦЕЛ; 
ПЕР 
 ч: ЦЕЛ; 
 б: ШИРЦЕЛ; 
УКАЗ 
 б := Число; 
 ОТ ч := 2 ДО Степень ВЫП 
   Число := Число * б 
 КОН; 
 ВОЗВРАТ Число 
КОН вСтепень; 

ЗАДАЧА СдвигЛ(Что, НаСколько: ШИРЦЕЛ): ШИРЦЕЛ; 
УКАЗ 
ВОЗВРАТ Что * вСтепень(2, НаСколько)
КОН СдвигЛ; 

ЗАДАЧА СдвигП(Что, НаСколько: ШИРЦЕЛ): ШИРЦЕЛ; 
УКАЗ 
ВОЗВРАТ Что ДЕЛИТЬ вСтепень(2, НаСколько)
КОН СдвигП;
  

Это сообщение отредактировал(а) Сый - 21.5.2006, 15:00
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Romikgy
Дата 24.2.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(Сый @ 24.2.2006, 11:10 Найти цитируемый пост)
(* not 3 *) = 2147483644 (* хотя должен быть равен -4 *).

просто проверяй старший знак если 1 отрицанельно и выводить -(МАХ-число)
Добавлено @ 12:34
Сый, че эт за язык такой.... smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
SoWa
Дата 24.2.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Это глагол!!! smile
Сый, я тебя вообще не понимаю! Задача- алгоритм. Кодs? приведенные выше- и есть алгоритмы.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Сый
Дата 24.2.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



> Сый, че эт за язык такой....
http://glagol.nad.ru

> Сый, я тебя вообще не понимаю! Задача- алгоритм. Кодs?
Задача в Глаголе - это, по-вашему, function.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Dian
Дата 24.2.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2006

Репутация: нет
Всего: 1



Цитата(SoWa @ 24.2.2006, 12:43 Найти цитируемый пост)
Это глагол!!!

А по приличней не было чего? smile
PM MAIL WWW   Вверх
Romikgy
Дата 24.2.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Сый, так это твой язык?
Цитата(Сый @ 24.2.2006, 11:10 Найти цитируемый пост)
* not 3 *) = 2147483644 (* хотя должен быть равен -4 *).

Да и тогда надо ввести понятие знаковое целое или беззнаковое целое


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Сый
Дата 24.2.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Dian, а чем тебя Глагол не устраивает?
Romikgy, нет, это не мой язык, хотя у меня есть форум, посвящённый в том числе и этому языку.
> Да и тогда надо ввести понятие знаковое целое или беззнаковое целое
Не понял, причём тут знаки (то выражение я для примера привёл, если ты на него смотришь, так что какой бы знак ни был бы у результата, он всё-равно будет неправильным (для НЕ, И-НЕ и ИЛИ-НЕ)).
Добавлено @ 15:13
А почему - смотри моё сообщение (23.2.2006, 22:51).
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Romikgy
Дата 24.2.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(Сый @ 24.2.2006, 14:09 Найти цитируемый пост)
Не понял, причём тут знаки

притом что число 3 в двоичной системе это 11, а -4 как ты хошь представляется 100 , если всего 3 разряда или как 11...1100, разрядов в 4 байта в хексе FFFFFFFC , егоже можно представить как 4 294 967 292, т.е. вариант со знаковыми числами выдает -4 , с безнаковыки 4 294 967 292, но это тоже -4,
В твоем же варианте , не обрабатывается старший разряд вообще (в смысле 4 байтов) вот и получается 2147483644
Цитата(Сый @ 24.2.2006, 14:09 Найти цитируемый пост)
А почему - смотри моё сообщение (23.2.2006, 22:51).

Смотрю
Цитата(Сый @ 23.2.2006, 22:53 Найти цитируемый пост)
Ну это пример привёл. Мне нужен сам алгоритм работы этой функции. Что тут непонятного?

И ?
У тя он реализован.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Dian
Дата 24.2.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2006

Репутация: нет
Всего: 1



Цитата(Сый @ 24.2.2006, 15:09 Найти цитируемый пост)
Dian, а чем тебя Глагол не устраивает?

Неудачный он...
PM MAIL WWW   Вверх
Сый
Дата 24.2.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Путём издевательства над калькулятором нашём алгоритм для вычисления not:
Код

ЕСЛИ Число > 0 ТО ВОЗВРАТ -1-Число ИНАЧЕ ВОЗВРАТ МОДУЛЬ(Число)-1 КОН;

Добавлено @ 18:38
> Неудачный он...
Ничем не обоснованное утверждение.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Сый
Дата 24.2.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Теперь, используя имеющиеся данные, могу посчитать и xor:
ВОЗВРАТ Логич(Логич(ч1,Логич(ч2,0,3),1),Логич(Логич(ч1,0,3),ч2,1),2); (* (a And Not b) Or (Not a And b) = a Xor b *)
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
mes
Дата 2.3.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(Сый @ 23.2.2006, 10:02 Найти цитируемый пост)
Вобщем, нужны алгоримты вычислений not, xor и т.д. Кто знает, поделитесь.

Цитата(Сый @ 23.2.2006, 23:19 Найти цитируемый пост)
Вобщем, чтобы not(5)=-6.


Судя по етим двум высказываниям, тебе нужно совсем не то, что ты спрашиваешь.
Начну с первого вопроса. Независимо с какими числами ты делаешь операцию, компьютер делает операции с двойчным представлением этого числа.
not (b) изменяет каждый бит числа на противоположный.
Пример: not (11001100) = 00110011


a and b оставляет включенными только те биты, которые являются включенными во втором. Остальные сбрасывает.
Пример: 11001100 and 00001111 = 00001100

a or b : включает те биты, которые являются включенными во втором. Остальные оставляет без изменения
Пример: 11001100 or 00001111 = 11001111

a xor b : включает те биты, которые , имеют противоположное состояние во втором. Остальные сбрасывает.
Пример: 11001100 xor 00001111 = 11000011


Почему же not(5)=-6? Такое можно сказать, только в том случае, если оговорить тип переменных участвующих в операции.
Если я скажу : 1+1 = 10, то ето будет некорректно, потому что такое только в двоичной системе. А в десятичной 1+1 =2.
Поетому для представления иной системы пользуятся обознаьчением. Обычно (ИМХО) 01B для двоичной, 1 или 1D для десятиричной,
01H и $1 для шестнадцатиричной .

Поэтому я думаю ты хотел спросить : Какой алгоритм вычесления xor,or,not для десятичных чисел.
Алгоритм простой: Провести двоичную операцию (как в примере выше) над двоичным представлением числа.

Как же компьютер представляет десятичные числа? Ето зависит от типа переменной.
Для примера рассмотрим операцию not для разных типов:
Тип boolean (1 разряд ) not (1) = not (01B) = 0;

Тип byte (8 разрядов) -бывает только положительным - not(3) = not(0000 0010B) = 1111 1101B = 253

Tип shortint(8 разрядов) -бывает как положительным так отрицательным not(3) = not(0000 0010B) = 1111 1101B = -4

Тип word (16 разрядов) -бывает только положительным - not(3) = not (0000 0000 0000 0010B) = 1111 1111 1111 1101B = 65533

Tип smallint(16 разрядов) -бывает как положительным так отрицательным - not(3) = not (0000 0000 0000 0010B) = 1111 1111 1111 1101B = -4

Заметил для "отрицательных" типов результат не зависит от кол-ва разрядов, это потому что отрицательные числа начинают свой отсчет с конца. Например для 8разрядного типа -1 = 255; -2 = 254; 253 =-3 и т.д.

Для чего нужны различные типы при одинаковом кол-ве разрядов? Потому что они отражают разный диапозон чисел:
byte от 0 до 255
shortint -128 до 127. (Обратите внимание, что модуль максимального отицательного числа больше, чем максимальное положительное число. Это потому,что ноль - положительное.

Какие подводные камни нас подстерегают если мы не будем строго следить за правильным преобразованием типов?
Пример: попробуем прибавить к числу с двоичным представлением 0111 1111B единицу.
0111 1111B + 0000 00001B = 1000 0000B
Теперь посмотрим если мы захотим получить десятичное представление:

для типа byte : 0111 1111B (127) + 0000 00001B (1) = 1000 0000B (128)

для типа shortint : 0111 1111B (127) + 0000 00001B (1) = 1000 0000B (-128) (минус 128!)

В "отрицательных" типах , включенный первый бит означает, что число отрицательное.
Добавлено @ 13:28
Цитата(Сый @ 24.2.2006, 12:10 Найти цитируемый пост)
 
Код


        ЕСЛИ (ч1дв[i]="0") И (ч2дв[i]="0") ТО Цепь.ДобавитьЗнак(РезДв,"0"); 
      АЕСЛИ (ч1дв[i]="0") И (ч2дв[i]="1") ТО Цепь.ДобавитьЗнак(РезДв,"0"); 
      АЕСЛИ (ч1дв[i]="1") И (ч2дв[i]="0") ТО Цепь.ДобавитьЗнак(РезДв,"0"); 
      АЕСЛИ (ч1дв[i]="1") И (ч2дв[i]="1") ТО Цепь.ДобавитьЗнак(РезДв,"1");




Некоректно (лишние действия) . Лучше так:
Код

    ЕСЛИ  (ч2дв[i]="0") ТО Цепь.ДобавитьЗнак(РезДв,"0"); 
   АЕСЛИ (ч2дв[i]="1") ТО Цепь.ДобавитьЗнак(РезДв, ч1дв[i]);

И в остальных примерах по тому же принципу.
smile
Добавлено @ 13:33
Цитата(Сый @ 24.2.2006, 18:31 Найти цитируемый пост)
Неудачный он...
Ничем не обоснованное утверждение.


Вообшето обоснованное. smile Только ето не алгоритм операции not , а подмена операции подобной ей. (Например для повышения скорости)
И годится только для операций над десятичными переменнами "отрицательного" (отрицательно-положительного) типа.


--------------------
PM MAIL WWW   Вверх
mes
Дата 2.3.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



У тебя алгоритм в твоём первом примере абсолютно правильный (за исключением излишних действий)
Тепе нужно ввести понятии "тип" для правильного отражения результатов.


--------------------
PM MAIL WWW   Вверх
Сый
Дата 2.3.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Интересные рассуждения.
Про Глагол - бред. Прекрасный язык. Ничем необоснованный гон на него (наверное, врождённая ненависть ко всему русскому, в т.ч. и словам/алфавиту/языку, иначе объяснить просто нечем).

Ну вобщем, спасибо, нужен мне сейчас был лишь xor, реализовал я его так:
Код

ЗАДАЧА xor(ч1,ч2:ЦЕЛ):ЦЕЛ; 
ПЕР 
  ч1дв,ч2дв:Текст.Число; 
  РезДв:РЯД 32+1 ИЗ ЗНАК; 
  i:ЦЕЛ; 
  Результат:ЦЕЛ; 
  тст:РЯД 2 ИЗ ЗНАК; 
УКАЗ 
  ч1дв:=""; ч2дв:=""; РезДв:=""; 
  ИзЦел2(ч1,32,ч1дв); 
  ИзЦел2(ч2,32,ч2дв); 
  i:=0; 
  ПОВТОРЯТЬ 
      (* xor *) 
       ЕСЛИ ч1дв[i]=ч2дв[i] ТО Цепь.ДобавитьЗнак(РезДв,"0") 
       ИНАЧЕ Цепь.ДобавитьЗнак(РезДв,"1") КОН;
    УВЕЛИЧИТЬ(i); 
  ДО i >= 32-1; 
  Цепь.ДобавитьЗнак(РезДв,"B"); 
  Результат:=УЗК(ВЦел(РезДв)); 
  ВОЗВРАТ Результат; 
КОН xor; 

То есть использовал преобразование двух чисел в двоичный вид (в цепочку знаков), дальше собирал на основе каждого знака этой цепочки новую цепь и преобразовывал в целое число.

Это сообщение отредактировал(а) Сый - 2.3.2006, 20:14
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
maxim1000
Дата 2.3.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Модератор: ох... хватит вам уже обсуждать язык Глагол в этом форуме, если кому-то не нравится или нравится Глагол, и он стремится поведать об этом всему миру - милости просим в Красную книгу, там, кстати, уже одна тема есть...
а здесь обсуждаются алгоритмы, в данном случае - алгоритм вычисления логических операций
я надеюсь, подобное разъяснение будет понятно всем, и не придется пользоваться административными мерами...

Это сообщение отредактировал(а) maxim1000 - 2.3.2006, 21:20


--------------------
qqq
PM WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.