帮忙注释一下这个算法,越详细越好 public long ELFHash(String str) { long hash = 0; long x = 0; for(int i = 0; i < str.length(); i++) { hash = (hash << 4) + str.charAt(i); if((x = hash & 0xF0000000L) != 0) { hash ^= (x >> 24); hash &= ~x; } } return (hash & 0x7FFFFFFF); } 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public long ELFHash(String str) { long hash = 0;//声明变量,算法的中间结果保存在该变量中。 long x = 0;//声明变量,辅助计算哈希码 for(int i = 0; i < str.length(); i++)//对参数中的每个字符进行运算。 { //将哈希值的中间结果向左移动4比特,再加上参数字符串当前字符的编码值, //结果保存到中间结果变量中。 //我推断参数字符串由英文和数字组成,只符合ACSII编码。 hash = (hash << 4) + str.charAt(i); if((x = hash & 0xF0000000L) != 0)//判断哈希计算结果是否为非负数 //x的值是 hash 变量中除了符号位不变,其他位置零,这样的值。 {//非负数时进入。 hash ^= (x >> 24);//将中间结果与x的高位字节做异或运算,再回写至中间结果 hash &= ~x;//将x安位取反与中间结果进行与运算,再回写至中间结果 } } return (hash & 0x7FFFFFFF);将中间结果去掉符号位返回。 } jsp问题!!!! 请问如何写程序替换jar中的文件? 一个java组件的paint方法的问题 怎么有这样的情况?import语句不能用*,请大家指导小弟 编程大世界(欢迎加入)........ 请教这个是什么文件。 !50分!如何对构造方法中的参数进行修改? 适合菜鸟练习的代码程序有哪些 请问,为什么我的程序能编译,却不能运行。我没有设classpath。请快点回复好吗。谢谢。 (关于URL)为什么我这样写是错误的? 考试急需答案 getNumActive() 是做什么用的?
{
long hash = 0;//声明变量,算法的中间结果保存在该变量中。
long x = 0;//声明变量,辅助计算哈希码
for(int i = 0; i < str.length(); i++)//对参数中的每个字符进行运算。
{
//将哈希值的中间结果向左移动4比特,再加上参数字符串当前字符的编码值,
//结果保存到中间结果变量中。
//我推断参数字符串由英文和数字组成,只符合ACSII编码。
hash = (hash << 4) + str.charAt(i);
if((x = hash & 0xF0000000L) != 0)//判断哈希计算结果是否为非负数
//x的值是 hash 变量中除了符号位不变,其他位置零,这样的值。
{//非负数时进入。
hash ^= (x >> 24);//将中间结果与x的高位字节做异或运算,再回写至中间结果
hash &= ~x;//将x安位取反与中间结果进行与运算,再回写至中间结果
}
}
return (hash & 0x7FFFFFFF);将中间结果去掉符号位返回。
}