return (hash & 0x7FFFFFFF);
第一个问题:是的,如果第一位大于7,意味着二进制第一位相与以后可能会出现1 第二个问题:malloc只是申请一片连续的内存空间,主要和你用什么来接收这个申请的内存首地址有关
关键在于一个对象的 HashCode可以为负数,这样操作后可以保证它为一个正整数 0x7FFFFFFF is 0111 1111 1111 1111 1111 1111 1111 1111 : all 1 except the sign bit. (hash & 0x7FFFFFFF) 将会得到一个正整数 因为你的hash是要作为数组的index的,这样可以避免出现下标为负数而出现异常
0x7FFFFFFF 是质数,0xFFFFFFFF 不是
69,371
社区成员
243,080
社区内容
加载中
试试用AI创作助手写篇文章吧