Advertisement
Guest User

Untitled

a guest
Nov 9th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. unsigned short int Hash_Function(char *key)
  2. {
  3.     unsigned short int sum=0;
  4.     char space = ' ';
  5.     for (int i=0;(i+2)<=strlen(key);i+=2)
  6.     {
  7.         if (sum>=(sum+abs(key[i])+abs(key[i+1]))) //Если сумма после сложения увеличилась значит
  8.         sum=(sum+abs(key[i])+abs(key[i+1])+1); //было переполнение . Спасаем этот бит
  9.         else sum=(sum+abs(key[i])+abs(key[i+1]));
  10.     if (sum & 0x8000!=0) //Организация циклического сдвига влево
  11.         sum=(sum<<1) + 1;
  12.     else  sum=(sum<<1);
  13.     }
  14.     if (i==(strlen(key)-1))
  15.     {
  16.         if (sum>=(sum+abs(key[i])+space)) //Если сумма после сложения увеличилась значит
  17.         sum=(sum+abs(key[i])+space+1);    //было переполнение . Спасаем этот бит
  18.         else sum=(sum+abs(key[i])+space);
  19.         if (sum & 0x8000!=0)  //Организация циклического сдвига влево
  20.             sum=(sum<<1) + 1; else  sum=(sum<<1);
  21.     }
  22. return sum;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement