Dav*_*rks 6 java bit-manipulation
我有一个很长的短路我希望短路中的位覆盖长的低位16位.
Ex(为了便于阅读,分为16位块):
> long = 0xffff 0xffff 0xffff 0xffff
> short= 0x1234
>
> output = (long)0xffff 0xffff 0xffff 0x1234
Run Code Online (Sandbox Code Playgroud)
static long foobar(long aLong, short aShort) {
return aLong & 0xFFFFFFFFFFFF0000L | aShort & 0xFFFFL;
}
Run Code Online (Sandbox Code Playgroud)
请注意,您必须在此处使用AND short
值0xFFFFL
,否则符号扩展将导致代码中断(long
如果short
大于或等于,则将设置结果中的所有高位,无论其原始值如何)0x8000
.
long l = ...;
short s = ...;
long n = (l & ~0xFFFF) | (s & 0xFFFFL);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1241 次 |
最近记录: |