안녕하세요^^
JAVA에서 난수 구하는 코드인데요
궁금한것이 몇개 있어서 이렇게 질문 드립니다^^
1. 아래 코드에서 Random rand 는 왜 static으로 해주는 것인가요?
2. rand.nextInt() >>> 1 에서 >>> 1 은 무엇을 뜻하는 것인지 궁금합니다^^
//난수 구하기
private static Random rand = new Random();
public static int rand(int num){
return (rand.nextInt() >>> 1) % num;
}
2. 비트 쉬프트 연산인데요... 만약에 rand로 음수가 나오면 >>> 연산을 통해서 양수로 바꿀수 있습니다.
물론 절대값은 아니구요... 왼쪽의 비트를 0으로 바꾸면서 쉬프트 하게 됩니다.
>>는 부호비트를 유지하는 효과가 있습니다.
양수는 >>>와차이가 없고 음수는 왼쪽의 비트를 1(음수가 부호비트가 1이므로...)로 채우면서 쉬프트합니다.