求助右移运算的问题
在书上看到这样一句话:右移后的值与0X0F进行按位与运算,可以舍弃任何的符号位扩展。但我没想明白,想请高手详细讲解一下。
首先,for bit operation
>> 表示 sign fill, 意思是在移位(shifting)以后,用符号填充,比如 1001 0100 right shift(>>) 4 bit. 就变成 1111 1001
>>>表示 zero fill 显然是用0填充 例如 1001 0100 right shift(>>>) 4 bits, 变成 0000 1001
那么这句话的意思就已经明确了,
//下面不是JAVA CODE, 只是这样写清楚一点
step 1, 1001 0100 >> 4 得出 1111 1001
step 2, 1111 1001 & 0000 1111 (0x0f) 得出 0000 1001 ,意思就是把用sign fill得出 1 都变成0,复制后面的4个bits
1 1 1 1 1 0 0 1
& 0 0 0 0 1 1 1 1
--------------------------------
0 0 0 0 1 0 0 1
其实这样做法和用>>>的结果相同 :)