java char 移位_关于java中char,byte,short的移位操作

>):将操作符左侧的操作数向右移动操作符右侧指定的位数。移动的规则是,如果被操作数的符号为正,则在二进制的高位补0;如果被操作数的符号为负,则在二进制的高位补1。

3.无符号右移位(>>>):将操作符左侧的操作数向右移动操作符右侧指定的位数。移动的规则是,无论被操作数的符号是正是负,都在二进制位的高位补0。

注意,移位运算符不存在“无符号左移位(<<>)运算和无符号右移位(>>>)运算,当要移位的位数大于被操作数对应数据类型所能表示的最大位数时,那么先将要求移位数对该类型所能表示的最大位数求余后,再将被操作数移位所得余数对应的数值,效果不变。。比如100>>35=100>>(35%32)=100>>3=12。

下面的测试代码验证了以上的规律:

public abstract class Test {

public static void main(String[] args) {

System.out.println(“1 << 3 = " + (1 << 3));

System.out.println("(byte) 1 << 35 = " + ((byte) 1 << (32 + 3)));

System.out.println("(short) 1 << 35 = " + ((short) 1 << (32 + 3)));

System.out.println("(char) 1 << 35 = " + ((char) 1 << (32 + 3)));

System.out.println("1 << 35 = " + (1 << (32 + 3)));

System.out.println("1L << 67 = " + (1L << (64 + 3)));

// 此处需要Java5.0及以上版本支持

System.out.println("new Integer(1) << 3 = " + (new Integer(1) << 3));

System.out.println("10000 >> 3 = ” + (10000 >> 3));

System.out.println(“10000 >> 35 = ” + (10000 >> (32 + 3)));

System.out.println(“10000L >>> 67 = ” + (10000L >>> (64 + 3)));

}

}

运行结果:

1.1 << 3 = 8

2.(byte) 1 << 35 = 8

3.(short) 1 << 35 = 8

4.(char) 1 << 35 = 8

5.1 << 35 = 8

6.1L << 67 = 8

7.new Integer(1) << 3 = 8

8.10000 >> 3 = 1250

9.10000 >> 35 = 1250

10.10000L >>> 67 = 1250

来源:http://blog.csdn.net/chattie/article/details/4029922

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值