누군가 다음 코드를 설명 할 수 있습니까? 특히, (short) x & 0x3FF
은 무엇을 얻지 못합니까?bitwise & 0x3FF는 무엇을합니까?
int num = ... //some number.
return (short) num & 0x3FF;
누군가 다음 코드를 설명 할 수 있습니까? 특히, (short) x & 0x3FF
은 무엇을 얻지 못합니까?bitwise & 0x3FF는 무엇을합니까?
int num = ... //some number.
return (short) num & 0x3FF;
이 결과는 본질적 (NUM의 포지티브 값) 모듈 (NUM 1024)와 같은 일이 항상 0 내지 1023이되도록 숫자의 상단 비트를 제로로.
넓은 의미의 문맥을 보지 않고도 은 여기에 있습니다. 이유는입니다.하지만 그 이유는 무엇입니까.
도움을 주셔서 감사합니다. – user1467855
16 진수를 2 진수로 변환하면 0x3FF == 0b1111111111
입니다.
&
은 비트 단위 AND를 수행하므로 켜기로 설정된 경우에만 낮은 비트를 유지합니다.
이렇게하면 대답은 0x3FF == 1023보다 크지 않으므로 답변은 short
에 저장됩니다.
도움을 주셔서 감사합니다! – user1467855
가장 오른쪽에있는 10 비트 만 유지합니다.
자바 연산자 &
는 1
모두 경우 해당 비트 1
이다 떠나는 AND로 된 두 개의 피연산자의 각각의 비트를 의미하는 "비트 AND"이다.
0x3ff
은 이진수 인 1111111111
이므로 ANDing을 사용하면 가장 낮은 10 비트를 제외한 모든 비트가 마스킹됩니다.
short
(16 비트 숫자 형식)으로 캐스트하면 아무 효과가 없습니다.
하단 10 비트를 제외하고 모두 버립니다. – Mysticial