java字符串右移运算_Java中的移位运算符<< ,>>和>>>

public class ShiftTest {

public static void main(String[] args) {

//右移1位演示

int x=0x80000000;

System.out.println("x的十进制表示形式为:"+x);

System.out.println("x的二进制表示形式为:"+Integer.toBinaryString(x));

int y=x>>1;

System.out.println("y的十进制表示形式为:"+y);

System.out.println("y的二进制表示形式为:"+Integer.toBinaryString(y));

int z=x>>>1;

System.out.println("z的十进制表示形式为:"+z);

System.out.println("z的二进制表示形式为:"+Integer.toBinaryString(z));

//左移1位演示

int m=0xC0000000;

System.out.println("m的十进制表示形式为:"+m);

System.out.println("m的二进制表示形式为:"+Integer.toBinaryString(m));

int n=m<<1;

System.out.println("n的十进制表示形式为:"+n);

System.out.println("n的二进制表示形式为:"+Integer.toBinaryString(n));

}

}

//输出结果:

//x的十进制表示形式为:-2147483648

//x的二进制表示形式为:10000000000000000000000000000000

//y的十进制表示形式为:-1073741824

//y的二进制表示形式为:11000000000000000000000000000000

//z的十进制表示形式为:1073741824

//z的二进制表示形式为:1000000000000000000000000000000

//m的十进制表示形式为:-1073741824

//m的二进制表示形式为:11000000000000000000000000000000

//n的十进制表示形式为:-2147483648

//n的二进制表示形式为:10000000000000000000000000000000

总结:

1.Java中int占4个字节的内存空间,也就是32个二进制位,这也就是我们常说的二进制位。

而一个16进制位相当于4个二进制位,所以int占用8个16进制位。所以   int x=0x80000000;应该能看明白。

2.java中“左移位”运算符 “<

3.java中“有符号右移位”运算符 “>>”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数根据移位前的符号进行填充,也就是说,如果为整数,则填1,如果为负数,则填0.

4.java中“无符号右移位”运算符 “>>>”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数补0。

5.java中,移位运算符适用的数据类型有:byte short char int long。

6.对于低于int型的操作数,先转换为int型再移位。

即:原始数据类型执行算术运算(或按位运算),类型比int型小的(即char、byte、short、),在进行运算之前,这些值会自动提升成int型。参见:使用java原始数据类型的几处细节

7.对于int型整数移位,a>>b,系统先将b对32取模,得到的结果才是真正的移位的位数。例如:a>>33和a>>1的结果是一样的。而,a>>32的结果就是a。(即一个int型数是32位的,如果你移动了32位,那么所有数位都移出了,就没有什么意义了,所以系统会先将移动的位数对32取模)

8.对于long型整数移位,a>>b,系统先将b对64取模,得到的结果才是真正的移位的位数。

9.a>>1与a/2的结果是一样的,a<<1与a*2的结果是一样的。

总之,一个数右移n位的结果是这个数除以2的n次方。一个数左移n位的结果是这个数乘以2的n次方。所以,当我们需要用程序求2的n次方时,可以写成这样,iresult=1<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值