整数运算--移位运算(<<,>>)

移位运算

在二进制的基础上,对数字进行平移。符号为“<<”或“>>”

对整数7进行左移,作用等同于n x 2^位移数,结果如下:

int n = 7;//00000000 00000000 00000000 00000111 = 7

int a = n << 1;//00000000 00000000 00000000 00001110 = 14,相当于7乘2的1次方

int b = n << 2;//00000000 00000000 00000000 00011100 = 28,相当于7乘2的2次方

int c = n << 28;//01110000 00000000 00000000 00000000 = 1879048192,相当于7乘2的28次方

int d = n << 29;//11100000 00000000 00000000 00001110 = -536870912,相当于7乘2的29次方

注意: 左移29位时,最高位变成了1,所以结果为负数(溢出)!

对整数28进行右移,作用等同于n / 2^ 位移数,结果如下:

int n = 28;//00000000 00000000 00000000 00011100= 28

int a = n >> 1;//00000000 00000000 00000000 00001110 =14 ,相当于28除2的1次方

int b = n >> 2;//00000000 00000000 00000000 00000111= 7,相当于28除2的2次方

int c = n >> 3;//00000000 00000000 00000000 00000011 = 3,相当于28除2的3次方

练习: 

使用位运算,完成指定变量的1.5倍增长,代码如下:

public class work04 {
	public static void main(String[] args) {
		//使用移位运算,对指定变量进行1.5倍增加
		int n = 12;
		int r1 = n+(n>>1);
		System.out.println("变量n=12,它的1.5倍="+r1);
		

		int m = 16;
		int r2 = m+(m>>1);
		System.out.println("变量m=16,它的1.5倍="+r2);
		
	}

}

运行结果: 

 注意:增长1.5倍不能直接用 " int r1 = n<<1.5; ",要用 “int r1 = n+(n+>>1)”。

就是在它现有的数据的基础上,加上它的0.5倍;向右移是不是就变成以0.5倍了,这样的话是不是加起来刚好就它的1.5倍呢!

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值