Android那些事儿Java学习笔记首页投稿(暂停使用,暂停投稿)

Java基础知识--“位移”

2017-06-21  本文已影响19人  Android那些事儿

** 文章摘要 **
1、移位包括左移和右移。左移相当于乘法,右移相当于除法。
2、右移包括带符号右移,无符号右移。


一、“位移”操作规则
1、左移:“a<<b”,将二进制a依次左移b位,低位空出来的b个位置补0。
2、带符号右移:“a>>b”,将二进制数a依次右移b位,高位空出来的b个位置,补充原来的符号位,即:正数补0,负数补1。
3、无符号右移:“a>>>b”,将二进制数a依次右移b位,高位空出来的b个位置,补0。

value 移位前 移位后
-2) 11111111111111111111111111111110 11111111111111111111111111110000(-16)
2 0000 0010 0001 0000(16)
value 移位前 移位后
-16 11111111111111111111111111110000 11111111111111111111111111111110(-2)
16 0001 0000 0000 0010(2)
value 移位前 移位后
-16 11111111111111111111111111110000 00011111111111111111111111111110
16 0001 0000 0000 0010(2)

二、“位移”操作的运用

一般来说,位移比乘除算式运算效率更高。

1、左移相当于乘法,每移一位相当于乘2;

System.out.println("1<<1 = "+(1<<1)
 +",1<<2 = "+(i<<2)
 +",1<<3 = "+(i<<3));//1<<1 = 2,1<<2 = 4,1<<3 = 8

2、右移相当于除法,每移一位相当于除2;

System.out.println("8>>1 = "+(8>>1)
 +",8>>2 = "+(8>>2)
 +",8>>3 = "+(8>>3));//8>>1 = 4,8>>2 = 2,8>>3 = 1
上一篇下一篇

猜你喜欢

热点阅读