나는 비트 연산자와 장난하고있어, 나는 부호없는 8 비트 값에 부정적인 바이트로 변환하려고했다,이 사람들이 무엇을 제안이다 :왜 자바에서 바이트 단위의 비트 AND는 이렇게합니까?
System.out.println(-20 & 0xFF); //bitwise AND on negative number and 255
그래서,이 완벽하게 작동하고, 236을 반환 ,하지만 왜? 내가 아는 한 :
00010100 //binary representation of -20
11111111 //binary representation of 0xFF or 255
--------
00010100 //it returns the same exact thing, so it's either -20 or 20
왜 작동합니까? 나는 아주 간단한 것을 놓친 것 같지만 그것을 이해할 수는 없다.
또한 256보다 작은 양수로 입력하면 동일한 숫자가 반환됩니다. 나는 자바가이 숫자들을 가지고 무엇을하는지 이해하지 못하는 것 같다.
-20! = 20이므로 표현도 동일하지 않습니다. –