请教hash的映射

FSB 2002-07-28 05:03:13
请问将key缩到0 -- (size-1) 用下面那个好?
h = key % (size-1) ;
h = key & (size-1) ;
...全文
39 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FSB 2002-07-29
  • 打赏
  • 举报
回复
to quicmous(快鼠)
通过对源代码的观察,确发觉size的动态增长是以2的倍数.
多谢.
许野平 2002-07-29
  • 打赏
  • 举报
回复
to FSB(游民):
如果size是2的n次幂,则h = key % size与h = key & (size-1)等价.
jack4liang 2002-07-29
  • 打赏
  • 举报
回复
两种方法都一样啊,也许求bitand 会跟快一点,毕竟生成的汇编代码好一点。

#include "stdio.h"
void main(void)
{

unsigned short i = 0x0000;
unsigned short j = 0x000F;
short n;

for(int k=0;k<100;k++)
{
n = (i++) & j;
printf("\n %d",n);
}
}
FSB 2002-07-28
  • 打赏
  • 举报
回复
但在lua的源代码中,使用的是h = key & (size-1) ; 这使到我感到疑惑.
不知作者出于怎样的考虑?


ps: lua在http://www.lua.org/中有下载
许野平 2002-07-28
  • 打赏
  • 举报
回复
更正:应该是 h = key % size
许野平 2002-07-28
  • 打赏
  • 举报
回复
h = key % (size-1) 较好,第二个严格讲是错误的。
LeeMaRS 2002-07-28
  • 打赏
  • 举报
回复
h = key % (size-1) ; 好
LeeMaRS 2002-07-28
  • 打赏
  • 举报
回复
h = key % (size-1) ; 好

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧