素材牛VIP会员
& 0x7fff 是什么意思呢?
 馨***茂  分类:Java代码  人气:1879  回帖:5  发布于6年前 收藏

String strs = "13634393448";
Bytes.toBytes((short) (strs.hashCode() & 0x7fff));

这里面的 & 0x7fff 是什么意思呢?

 标签:java

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv1 新人
非***扰 交互设计师 6年前#1

String.hashCode()的返回值计算方式为:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
你给的13634393448,其hashCode结果是1002012672,也就是0x3bb98000
0x7fff做""操作,也就是表示取0x3bb98000后三位的值,本题的结果自然就是0了。

Lv6 码匠
許***愿 Linux系统工程师 6年前#2

0x 转换16进制

Lv5 码农
16***50 软件测试工程师 6年前#3

0x07fff=0111111111111111
跟这个东西做与操作会有什么情况,就头位是0,与完了其他位都不变。

根据数据类型,带符号数据类型中高一位代表符号,在这种情况下做与操作,作用是取绝对值,也就是取到有用的15位。

有的时候按位搜索或是按位运算都会相对快一些。

还有一种情况是装逼用。

Lv4 码徒
那***哦 移动开发工程师 6年前#4

单个 & 是 按位与操作, 两个 & 是逻辑与

Lv5 码农
Y2***Y2 JS工程师 6年前#5

0x7fff = 0111 1111 1111 1111
& 为与运算
所以这个操作就是取“13634393448”这个数二进制表示后的最后15位数

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取