您的位置:首页 > 其它

无符号右移,左移,右移操作

2013-07-15 20:43 183 查看
转载请注明出处:http://blog.csdn.net/droyon/article/details/9336083

">>>"无符号右移

操作规则:无论正负数,前面补零。

">>"右移

操作规则:正数前面补零,负数前面补1

"<<"左移

操作规则:无论正负数,后面补零。

public class BitmoveTest {
public static void main(String args[]){

// >> 右移 前补符号位
//>>相当于除2,左移相当于乘2
int i=11;
int j=-13;
System.out.println("右移,前面的位补符号位");
//机器数值:0000 0000   0000 0000   0000 0000   0000 1011
//补码数值:0000 0000   0000 0000   0000 0000   0000 1011
//右移一位:0000 0000   0000 0000   0000 0000   0000 0101
System.out.println("11>>1  的值为:"+(i>>1));//结果为:5
//机器数值:1000 0000   0000 0000   0000 0000   0000 1101
//补码数值:1111 1111   1111 1111   1111 1111   1111 0011
//右移一位:1111 1111   1111 1111   1111 1111   1111 1001(补码)
//结果原码:1000 0000   0000 0000   0000 0000   0000 0111(-7)
System.out.println("-13>>1 的值为:"+(j>>1));//结果为:-7
System.out.println("*************************************\n");

System.out.println("左移,后面的位补零");
//机器数值:0000 0000   0000 0000   0000 0000   0000 1011
//补码数值:0000 0000   0000 0000   0000 0000   0000 1011
//左移一位:0000 0000   0000 0000   0000 0000   0001 0110
System.out.println("11<<1  的值为:"+(i<<1));//结果为:22
//机器数值:1000 0000   0000 0000   0000 0000   0000 1101
//补码数值:1111 1111   1111 1111   1111 1111   1111 0011
//左移一位:1111 1111   1111 1111   1111 1111   1110 0110(补码)
//结果原码:1000 0000   0000 0000   0000 0000   0001 1010(-26)
System.out.println("-13<<1 的值为:"+(j<<1));//结果为:-26
System.out.println("*************************************\n");

//>>>无符号右移 前补0
System.out.println("无符号右移,前面补零");
//机器数值:0000 0000   0000 0000   0000 0000   0000 1011
//补码数值:0000 0000   0000 0000   0000 0000   0000 1011
//右移一位:0000 0000   0000 0000   0000 0000   0000 0101
System.out.println("11>>>1  的值为:"+(i>>>1));//结果为:5
//机器数值:1000 0000   0000 0000   0000 0000   0000 1101
//补码数值:1111 1111   1111 1111   1111 1111   1111 0011
//右移一位:0111 1111   1111 1111   1111 1111   1111 1001(补码也是原码)
System.out.println("-13>>>1 的值为:"+(j>>>1));//结果为:2147483641
System.out.println("*************************************\n");

}
}


操作结果:

右移,前面的位补符号位
11>>1  的值为:5
-13>>1 的值为:-7
*************************************

左移,后面的位补零
11<<1  的值为:22
-13<<1 的值为:-26
*************************************

无符号右移,前面补零
11>>>1  的值为:5
-13>>>1 的值为:2147483641
*************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息