Java数据通道移位_java中的移位操作

java中的移位操作仅仅对int和long有效,byte、short、char升级为int后再进行移位

移位操作符有>>(右移)、<>>(右移)三种,注意两点:1.没有<<

三种的差别是

>>是带符号右移。负数高位补1,正数补0         ----->>>也就是在高位用符号位进行填充。

<

>>>是不带符号右移,不论负数还是正数,高位补0(无符号右移。忽略符号位。空位都以0补齐)

在详细的运算中所有转化为补码逻辑进行移位或者按位运算。

測试程序:

publicclassShift {

publicstaticvoidmain(String[] args) {

System.out.println("******************正数左移在低位补0*******************");

inta =1;

a = a <

System.out.println(a);

System.out.println(Integer.toBinaryString(a));

System.out.println("******************正数右移在高位补0********************");

a = 1;

a = a >> 2;

System.out.println(a);

System.out.println(Integer.toBinaryString(a));

System.out.println("******从上面结果能够看出:移位是不循环的*****");

System.out.println("看看负数的移位:");

System.out.println("***********负数的右移操作高位补1**************");

inti = -1;

System.out.println(i + ":");

System.out.println(Integer.toBinaryString(i));

i = i >> 2;

System.out.println(i);

System.out.println(Integer.toBinaryString(i));

System.out.println("**********负数的左移操作低位补0*****************");

i = i <

System.out.println(i);

System.out.println(Integer.toBinaryString(i));

System.out.println("*************再看看>>>操作符*************");

System.out.println("*************负数的>>>操作高位补0***************");

i = -1;

System.out.println(Integer.toBinaryString(i));

i = i >>> 10;

System.out.println(i + ":");

System.out.println(Integer.toBinaryString(i));

System.out.println("*************注意:没有<<

System.out.println("**********byte类型移位时要强转换*************");

bytek =10;

System.out.println(Integer.toBinaryString(k));

k = (byte) ((byte) k >>>2);

System.out.println(Integer.toBinaryString(k));

}

}

执行结果:

******************正数左移在低位补0*******************

4

100

******************正数右移在高位补0********************

0

0

******从上面结果能够看出:移位是不循环的*****

看看负数的移位:

***********负数的右移操作高位补1**************

-1:

11111111111111111111111111111111

-1

11111111111111111111111111111111

**********负数的左移操作低位补0*****************

-4

11111111111111111111111111111100

*************再看看>>>操作符*************

*************负数的>>>操作高位补0***************

11111111111111111111111111111111

4194303:

1111111111111111111111

*************注意:没有<<

**********byte类型移位时要强转换*************

1010

10

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值