논리적 인 오른쪽 및 왼쪽 시프트 (>>> 및 < < 사용)를 수행하려고합니다. 불행히도 나는 시프트 양이 32보다 클 때 모듈을 사용하여 비트를 회전시키고 비트를 올바른 위치로 이동시키는 것을 볼 수 있습니다. 그것은 단지 그것들을 바꾸는 것이 아닙니다. 어떻게 피할 수 있습니까? CentOS에서 java 7을 사용합니다. 업데이트 :자바에서 결과가 바뀜
가public static void main(String[] args) {
int a = 0xc0000003;
int b = a >>> 32;
int c = 0xc0000003;
int d = c << 36;
System.out.println("b=" + b + ", d=" + d);
}
출력이 b=-1073741821, d=48
입니다 : 예제와 함께 연주 후 나는 버그가 있다고 생각합니다. 왜? 어떻게하면 C에서와 같이 논리를 왼쪽이나 오른쪽으로 옮길 수 있습니까? 자바
이들은 "[비트 시프트 연산자] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html)"라고합니다. 그들은 * shift *, rotate *하지 않습니다. 그들이 회전한다는 아이디어를 어디에서 얻었습니까? – Andreas
문제를 보여주는 [mcve]를 제공해주십시오. –
20 년이 넘은 언어가 그런 사소한 버그를 가지고있는 것보다 뭘하고 있는지 잘 모를 것입니다. – eldo