문제

큐와 큐 배열이 있습니다.buckets는 배열이며 collector가 대기열입니다.pass는 패스를 저장하는 정수입니다.peek()라는 대기열의 첫 번째 셀을 포함하는 메서드를 나에게 복귀시키는 메소드가 있습니다.shiftOne()는 한 대기열의 머리를 다른 대기열의 머리를 다른 대기열로 이동시키는 방법입니다.

이제이 코드가 나에게 작동하지 않습니다

bucket[((collector.peek()>>(pass * 8)) &0xFF)].shiftOne(collector);
.

나는 단계별로 갔고 비트를 제대로 마스킹하지 않고 밝혀졌습니다.나는 그들을 바꿀 수 있지만 그것이 그것에 관한 것입니다.그래서 10 개의 요소 배열에 대해 요소 102에 액세스하려고합니다.내가 도대체 뭘 잘못하고있는 겁니까?전원 및 모듈러스를 사용하여 정렬 할 수 있기 때문에 peek()shiftOne()를 알고 있습니다.

도움이 되었습니까?

해결책

You're confusing radix-10 with radix-2.

Bit shifting is division by 2, so for example: 102 >> 1 = 102 / 2 = 51.
Similarly: 102 >> 8 = 102 / 2^8 = 102 / 256 = 0 (in int terms).

The code (i >> 8) & 0xFF for example is used to extract the content of the second byte of the given i value.

For your case - stick with divisions by 10 with modulus.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top