java右移位_java移位运算符详解

java

移位运算符不外乎就这三种:

<<

(左移)、

>>

(带符

号右移)和

>>>

(无符号右移)

1

左移运算符

左移运算符

<<

使指定值的所有位都左移规定的次数。

1

)它的通用格式如下所示

value <

num

指定要移位值

value

移动的位数。

左移的规则只记住一点:

丢弃最高位,

0

补最低位

如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数

取模

。如对

int

型移动

33

位,实际上只移动了

33%32=1

位。

2

)运算规则

按二进制形式把所有的数字向左移动对应的位数,高位移出

(

舍弃

)

,低位的空位补零。

当左移的运算数是

int

类型时,每移动

1

位它的第

31

位就要被移出并且丢弃;

当左移的运算数是

long

类型时,每移动

1

位它的第

63

位就要被移出并且丢弃。

当左移的运算数是

byte

short

类型时,将自动把这些类型扩大为

int

型。

3

)数学意义

在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以

2

1

次方

,左

n

位就相当于乘以

2

n

次方

4

)计算过程:

例如:

3 <<2(3

int

)

1

)把

3

转换为二进制数字

0000 0000 0000 0000 0000 0000 0000 0011

2

)把该数字高位

(

左侧

)

的两个零移出,其他的数字都朝左平移

2

位,

3

)

在低位

(

右侧

)

的两个空位补零。

则得到的最终结果是

0000

0000

0000

0000

0000

0000

0000 1100

转换为十进制是

12

移动的位数超过了该类型的最大位数,

如果移进高阶位(

31

63

位),那么该值将变为负值。下面的程序说明了这一点:

Java

代码

// Left shifting as a quick way to multiply by 2.

public class MultByTwo {

public static void main(String args[]) {

int i;

int num = 0xFFFFFFE;

for(i=0; i<4; i++) {

num = num <

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值