【发布时间】:2016-07-11 22:02:04
【问题描述】:
假设我在一个运行在模拟器(marshmallow,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
显然,最后一行是不正确的:它应该与第三行相同。
为什么? 我怎样才能让它按预期工作?
【问题讨论】:
标签: android bit-manipulation bit-shift bitmask binary-operators