java基础中的基础--位运算符

1、左移(<<)

左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
左移移位相当于乘以2

//0000 0000 0000
//0000 0000 1000 1<<3
//0000 0001 0000 1<<4 1*2的4次方=1*2*2*2*2=16
int i = 1<<3;//8
int i2 = 1<<4;//8
System.out.println(i);//8
System.out.println(i2);//16
//0000 0000 0010
//0000 0001 0000 2<<3 2*2*2*2
int i3 = 2<<3;//这样 将第二位往前面移动3位
System.out.println(i3);//16
//0000 0000 0011
//0000 0001 1000 3<<3 3*2*2*2=24,将3左移3位,没移动一位就是*2,移动3次就是3个*2=2*2*2=8
int i4 = 3<<3;//这样 将第二位往前面移动3位
System.out.println(i4);//24

2、右移(>>)

右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。

//0000 0000 0010
//0000 0000 0001 2>>1
int i = 2 >> 1;
System.out.println(i);//1
//0000 0000 0001
//0000 0000 0000 1>>1
int i2 = 1 >> 1;
System.out.println(i2);//0
//0000 0001 1000
//0000 0000 0011 24>>3 相当于将24往前面移动3位,每移动一位就/2,移动了3次=24*2*2*2*2=3
int i3 = 24 >> 3;
System.out.println(i3);//3
//0000 0001 1001
//0000 0000 0011 25>>3 相当于将25往前面移动3位,每移动一位就/2,移动了3次=25-1/2/2/2/2=3
int i4 = 25 >> 3;
System.out.println(i4);//3(这里为什么要为3,第一在往右移时,如果为25,那么右边的第一位肯定是1,这个时候移动了后右边
//第一位肯定就位0了,所以在计算时,可以这样理解(25-1)/2/2/2/2=3
//0000 0001 1001
//0000 0000 1100 25>>1 相当于将25往前面移动1位,每移动一位就/2,移动了3次=(25-1)/2=12
int i5 = 25 >> 1;
System.out.println(i5);//12
//总结:只要往右移动,首先-1,在/2运算;

3、&

与运算符用符号“&”表示,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0。

//0100 4
//0011 3
int i = 4 & 3;
System.out.println(i);//0
//0101 5
//0011 3
int i2 = 5 & 3;
System.out.println(i2);//1
//总结:两个操作数中位都为1,结果才为1,否则结果为0

4、| 

或运算符用符号“|”表示,其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0

//0100 4
//0011 3
int i = 4 | 3;
System.out.println(i);//7
//0101 5
//0011 3
int i2 = 5 | 3;
System.out.println(i2);//7
//总结:两个位只要有一个为1,那么结果就是1,否则就为0

5、~

非运算符用符号“~”表示,其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0。

6、^

异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。

 

参考
https://www.cnblogs.com/shuaiding/p/11124974.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值