不定项选择题
使用“<<”和“>>”操作符的陈述正确的是______。
A.0000 0100 0000 0000 0000 0000 0000 0000<<5得到
1000 0000 0000 0000 0000 0000 0000 0000
B.0000 0100 0000 0000 0000 0000 0000 0000<<5得到
1111 1100 0000 0000 0000 0000 0000 0000
C.1100 0000 0000 0000 0000 0000 0000 0000>>5得到
1111 1110 0000 0000 0000 0000 0000 0000
D.1100 0000 0000 0000 0000 0000 0000 0000>>5得到
0000 0110 0000 0000 0000 0000 0000 0000
【正确答案】
A、C
【答案解析】Java的移位操作符一共有三种,分别是“>>”、“>>>”、“<<”,执行的操作分别是有符号右移,无符号右移,左移。有符号右移的意思是说移入的最高位和原最高符号位相同,无符号右移是移入位始终补零,左移时最低位始终补零,最高位被舍弃。移位操作符另一个非常值得注意的特点是其右操作数是取模运算的,意思是说对于一个int型数据而言,对它移位32位的结果是保持不变而非变成零,即:a>>32的结果是a而不是0,同理,对long型数是对右操作数取64的模,a>>64==a。还有一点需要注意的是移位操作符“>>>”只对int型和long型有效,对byte或者short的操作将导致自动类型转换,而且是带符号的。