2017-12-06 22 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 

ときはinitialValue = 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とはinitialValue変数の終わりに。

+1

何ですか?いいえ、それは問題ではありません:) –

関連する問題