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

转载请注明出处: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
*************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值