java - & 0x7fff 是什么意思呢?
PHPz
PHPz 2017-04-18 09:43:40
0
5
1211

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

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

PHPz
PHPz

学习是最好的投资!

모든 응답(5)
巴扎黑

0x07fff=0111111111111111
이걸 연산하면 어떻게 될까요? 첫 번째 비트는 0이고 나머지 비트는 그대로 유지됩니다.

데이터 유형에 따라 부호 있는 데이터 유형 중 상위 비트가 기호를 나타냅니다. 이 경우 AND 연산을 사용하여 절대값, 즉 유용한 15비트를 얻습니다.

비트 검색이나 비트 연산이 상대적으로 더 빠른 경우도 있습니다.

과시하기 위해 사용되는 상황은 또 있습니다.

刘奇

String.hashCode()의 반환 값은 다음과 같이 계산됩니다. s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
13634393448을 제공했으며 해당 hashCode 결과는 1002012672, 즉 0x3bb98000입니다.
0x7fff과 함께 "" 연산을 수행합니다. 이는 0x3bb98000의 마지막 세 자리를 취한다는 의미입니다. 이 질문의 결과는 당연히 0입니다.

PHPzhong

0x7fff = 0111 1111 1111 1111
&는 AND 연산입니다
. 따라서 이 연산은 숫자 "13634393448"의 이진 표현의 마지막 15자리를 취하는 것입니다.

伊谢尔伦

0x 16진수 변환

巴扎黑

단일 &은 비트 AND 연산이고, & 2개는 논리 AND

입니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿