저는 비트 연산자를 가지고 놀고 싶었고 순환 비트 시프트를 만들고 싶었습니다.Java 비트 순환 시프트가 작동하지 않습니다.
//Circular right shift
private static void testCircular() {
int x = 37;
System.out.println(x + " Is " + Integer.toBinaryString(x));
x = (x >>> 8) | (x << (Integer.SIZE - 8));
System.out.println(x + " Is " + Integer.toBinaryString(x));
}
이 나를을 제공합니다 : 그래서 수 (101)가 나는 자바에서이 예제를 시도 할 때 1 단계는 이제 011 초래한다 왼쪽 쉬프트가 있다고, 그냥 같은 제로의 무리를 보여줍니다 다음 결과 :
37 Is 100101
620756992 Is 100101000000000000000000000000
당신이 볼 수 있듯이, 그것은 merly 아무 것도 이동하지 않고 후행 0을 추가했습니다. 나는 또한 state = Integer.rotateRight(state,8);
방법을 시도했다, 그것은 똑같이한다. 내가 여기서 무엇을 놓치고 있니?
이것은 정확한 대답입니다. 그것을 시험하는 쉬운 방법은 교대 '37'32 시간에 의하여이고 당신은 본래 "37"를 얻을 것이다. – kkflf
바이너리 문자열이 모든 0을 인쇄하지 않는다는 사실을 조금 오해하지 않는가? – kadde23
제 취향에 따라 오해의 소지가있을 수 있습니다. 전체 표현을 인쇄 할 수있는 옵션이 있는지 확인해 보지만 찾을 수는 없습니다. – kaos