Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полиномиальная хэш-функция 
:(
    Опции темы
Сый
Дата 20.5.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хотелось бы знать, что эта функция из себя представляет. Нашёл вот такой вот код на C:
Код

unsigned int HashBytesPolynomial(unsigned char *value, unsigned int len)
{
   unsigned char *word = value;
   unsigned int ret = 0; 
   unsigned int i;  
   for(i=0; i < len; i++)
   {
       int mod = i % 32;
       ret ^=(unsigned int) (word[i]) << mod;
       ret ^=(unsigned int) (word[i]) >> (32 - mod);
   }
   return ret;
}

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


Эксперт
****


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

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



каждое i-е значение массива сдвигается циклически на i бит
потом делается xor их всех 


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


Шустрый
*


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

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



Как я понял, ">>" - это сдвиг, а "<<" - это xor. А что означает приравнивание "^="? 
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
maxim1000
Дата 21.5.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Сый @  21.5.2006,  07:14 Найти цитируемый пост)
Как я понял, ">>" - это сдвиг, а "<<" - это xor. А что означает приравнивание "^="?

<< - сдвиг влево (в сторону старших разрядов)
>> - сдвиг вправо
x^=y эквивалентно x=x^y
^ - xor 


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


Шустрый
*


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

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



Код

ЗАДАЧА ПолиномиальныйХэш(ЦепьЗнаков-: ЦЕПЬ): ЦЕЛ;
ПЕР
  ч, ост, рез: ЦЕЛ;
УКАЗ    
   рез := 0;
   ОТ ч := 0 ДО ДЛИНА(ЦепьЗнаков) - 1 ВЫП
     ост := ч ОСТАТОК 32;
       рез := ИсклИЛИ(рез, Асм.Сдвиг(ВЦЕЛ(ЦепьЗнаков[ч]), ост));
       рез := ИсклИЛИ(рез, Асм.Сдвиг(ВЦЕЛ(ЦепьЗнаков[ч]), -ост))
   КОН;    
   ВОЗВРАТ рез
КОН ПолиномиальныйХэш;

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


Шустрый
*


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

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



Неужели никто Глагол не знает?  smile  
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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