首页 > 编程知识 正文

Java 中hash

时间:2023-05-06 07:56:13 阅读:179554 作者:902

0x7FFFFFFF是以十六进制表示的整数,是整数中最大的值

转换为二进制

0x7fffffff 01111111111111111111111111111111111111111111111111111111111111111111111111111111111111131 (前31个1个1表示数值)为整数型最高有效比特,符号比特0为

得到hash及其分位数和正数

为什么不使用Math.abs,是因为如果计算出这个hash是最小的负数-2^31,正整数没有表示这个最小负数的32位,所以仍然会返回负数。 也就是说,绝对值函数返回负数。 java的int型内存的长度为32位,符号位占1位,因此可用于表示int数的范围为31位。

但是,int的范围是从“-2^31”到“2^31-1”。

这里为什么是2^31-1,这里减去1的理由是,在将二进制数变换为十进制的变换法中,将二进制数1111直接以2^4给出10进制数2^3 2^2 2^1 2^0=15的数量为16 (这里有16个但是,1111的最大可以表示的十进制整数是15,所以2^31-1这里是可以表示的最大整数!

也就是说,从“-2147483648”到“2147483647”。

关于int的范围,从“-2^31”到“2^31-1”; 请看本https://blog.csdn.net/Shi hengli 2010/article/details/51821827

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。