一、能够进行按位操作的有都是整型数值,有int,char,byte,short,long
移位运算符有<<,>>,>>>
对于字节数小于int的整型,在进行操作时一律转为整型:
例如:
byte a = 1;
byte b = a>>1;会报错,因为a>>1时,已经被转成了整型,
其中,char,byte,short的正数转整型时,高位补0,在byte和short中的负数转整型时,高位补1.
另外,long也可以进行移位,所以你说的“二进制只能对INT型整数进行移位”就无从谈起了。
二、这点楼上已经说清楚了。
三、向右位移有两种方式:>>和>>>
>>使用了符号扩展,即:若符号为正,在最高位插入0,否则,在最高位插入1,所以-1>>n都等于-1,
因为-1的二进制表示为11111111 11111111 11111111 11111111,插1后不变
>>>不适用符号扩展,一律在高位插0,所以-1>>>1就等于2147483647了,发生变化了
希望对你有帮助......
|