Java位运算之与(&)非(~)或(|)异或(^)

位运算符主要针对两个二进制整数的位进行逻辑运算,主要有与(&)、非(~)、或(|)、异或(^),下面分别介绍其运算规则。
一、与(&)
与(&)的运算规则:

1、1 & 1 = 1;
2、0 & 1 = 1 & 0 = 0;
3、0 & 0 =0

以13&17为例,13的二进制为1101,17的二进制为10001,当13和17进行&运算时,由于17有五位,13只有四位,将13的二进制补成五位为01101,根据以上规则,对应的每一位进行&运算结果为00001,转换为十进制为1。

二、非(~)
非(~)的运算规则:

1、~ 1 = 0;
2、~ 0 = 1

以~13为例,13二进制为:
0000 0000 0000 0000 0000 0000 0000 0000 1101(正数的原码等于补码
经过~运算后为:
1111 1111 1111 1111 1111 1111 1111 0010(其中第一位为符号位)
再求反码为:
1000 0000 0000 0000 0000 0000 0000 1101(其中求反码时符号位不变
再对反码+1为:
1000 0000 0000 0000 0000 0000 0000 1110
其中1表示负号,0表示正号,转换为十进制为-14。

三、或(|)
或(|)的运算规则:

1、1 | 1 =1;
2、1 | 0 = 0 | 1 = 1;
3、0 | 0 = 0

以13|17为例,13的二进制为1101,17的二进制为10001,当13和17进行 | 运算时,由于17有五位,13只有四位,将13的二进制补成五位为01101,根据以上规则,对应的每一位进行&运算结果为11101,转换为十进制为29。

四、异或(^)
异或(^)的运算规则:

1、1 ^ 1 = 0 ,0 ^ 0 = 0;
2、0 ^ 1 = 1 ^ 0 = 1

以13^17为例,13的二进制为1101,17的二进制为10001,当13和17进行 ^ 运算时,由于17有五位,13只有四位,将13的二进制补成五位为01101,根据以上规则,对应的每一位进行&运算结果为11100,转换为十进制为28。

System.out.println(Integer.toBinaryString(13));//1101
System.out.println(Integer.toBinaryString(17));//10001
System.out.println(13&17);//1
System.out.println(~13);//-14
System.out.println(13|17);//29
System.out.println(13^17);//28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值