Java 位运算符

1.^(异或运算)

public static void main(String[] args) {
    System.out.println("2^3运算的结果是 :"+(2^3));
    //打印的结果是:   2^3运算的结果是 :1
}

那么这个1是怎么来的,我们要知道^、<<、>>等位运算符主要针对二进制,算异或的时候相同的为0,不同的为1 
2转换成二进制是0010 
3转换成二进制是0011 

所以 0010^0011 的结果就是 0001 转换成十进制是1 ,所以2^3=1

2.|:(或 运算

操作的规则是:仅当两个操作数都为0时,输出的结果才为0。

否则为1,示比例如以下:

12 的二进制为 1100

5   的二进制为 0101

则 12 | 5 的二进制为 1101。则完整的运算式为 12 & 5 = 13; 


3.<<向左位移

public static void main(String[] args) {
    System.out.println("2<<3运算的结果是 :"+(2<<3));
    //2<<3运算的结果是 :16
}

在运算的时候同样要把十进制转换成二进制, 2的二进制是0010 ,向左移3位后面用000齐,结果是10000 二进制的10000转换成十进制是16(从右往左分别是1,2,4,8,16,32….) 

4>>向右位移,代码如下
public static void main(String[] args) {
    System.out.println("2>>3运算的结果是 :"+(2>>3));
    //2>>3运算的结果是 :0
}

原理和左移是一样的,先转成二进制0010,再向右侧移动三位,向右侧移动的时候在左侧补齐0,移动几位齐几位,移动后的二进制是0000 转成十进制就是0了。 


5.&运算 按位“与”的计算是把两个数字分别写成二进制形式,然后按照每一位判断,&计算中,仅当两个操作数都为1时,输出结果才为1,否则为0。

看下例子:

System.out.println(1&2);打印0 , System.out.println(1&1);打印1 

下面解释下原因 
1的二进制为: 0001 

2的二进制为: 0010 

运算的结果为:0000  转换成十进制为 0  所以 1&2 = 0

同理两个1的&运算的二进制结果为0001 转换成十进制为1 所以 1&2 = 1

12 的二进制为 1100

5   的二进制为 0101

则 12 & 5 的二进制为 0100 转换成十进制为4,则完整的运算式为 12 & 5 = 4; 

注:关于十进制与二进制的转换,简单的说每四位可以遵循”8421“原则,1001即8+1=9,1011即8+2+1=11

二进制怎么转化成十进制转换的方法是:

把各个为拆开。乘以2的次幂。末尾位乘2的0次幂。依次类推。 

比如:10010111 

十进制=1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2+1*2^0 ;

PS:末尾位是2的零次幂,所以是1。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值