シミュレーター(マシュマロ、OSX 64ビット)で動作するAndroidアプリで非常に簡単なテストを作成し、logcat出力を作成するとします。
Log.i("test","long int = "+17301768L);
Log.i("test","long int = "+(1<<3 | 1<<8 | 1<<19 | 1<<24));
Log.i("test","long int = "+ 8607236360L);
Log.i("test","long int = "+(1<<3 | 1<<8 | 1<<19 | 1<<24 | 1<<33));
…logcat 出力:
long int = 17301768
long int = 17301768
long int = 8607236360
long int = 17301770
明らかに、最後の行は正しくありません。3 行目と同じにする必要があります。
なんで ?どうすれば期待どおりに動作させることができますか?