2017-12-06 2 views
0

현재 16 진수 값을 사용하는 코드를 작성하고 있습니다. 어떤 이유로 프로그램에서 16 진수 값이 32 비트 long 값에서 64 비트 long 값으로 변경됩니다. 왜 이런 일이 일어나는 지에 대한 통찰력을 제공 할 수 있습니까?값의 길이가 변경됨 (Java)

 final private long feedbackValue = 0x87654321; 
    private long state; 

public void initialize(long initialValue) { 
    int count = 0; 
    state = feedbackValue^initialValue; 

    System.out.println("State "+count+":"+ String.format("0x%08X",state)); 
    while (count < 8) { 
     update(); 

     count++; 
     System.out.println("State "+count+":"+ String.format("0x%08x",state)); 
    } 

}//end initialize method 

private void update() { 
    if ((state & 1) == 0) { 
     state = state >>> 1; 

    } else { 
     state = (state >>> 1)^feedbackValue; 

    } 

}//end update method 

로 초기 = 0xFFFFFFFF로는, 여기 한 결과 인 경우 :이 긴로서 판독되도록

State 0:0x789ABCDE 
    State 1:0x3c4d5e6f 
    State 2:0xffffffff9943ec16 
    State 3:0x7fffffffcca1f60b 
    State 4:0xc00000006135b824 
    State 5:0x60000000309adc12 
    State 6:0x30000000184d6e09 
    State 7:0xe7ffffff8b43f425 
    State 8:0x8c00000042c4b933 

답변

0

장소에 "L"로 초기 feedbackValue 및 변수의 끝이.

+1

무엇? 아니, 그게 문제가 아니야 :) –

관련 문제