Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned short int Hash_Function(char *key)
- {
- unsigned short int sum=0;
- char space = ' ';
- for (int i=0;(i+2)<=strlen(key);i+=2)
- {
- if (sum>=(sum+abs(key[i])+abs(key[i+1]))) //Если сумма после сложения увеличилась значит
- sum=(sum+abs(key[i])+abs(key[i+1])+1); //было переполнение . Спасаем этот бит
- else sum=(sum+abs(key[i])+abs(key[i+1]));
- if (sum & 0x8000!=0) //Организация циклического сдвига влево
- sum=(sum<<1) + 1;
- else sum=(sum<<1);
- }
- if (i==(strlen(key)-1))
- {
- if (sum>=(sum+abs(key[i])+space)) //Если сумма после сложения увеличилась значит
- sum=(sum+abs(key[i])+space+1); //было переполнение . Спасаем этот бит
- else sum=(sum+abs(key[i])+space);
- if (sum & 0x8000!=0) //Организация циклического сдвига влево
- sum=(sum<<1) + 1; else sum=(sum<<1);
- }
- return sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement