微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java - 位运算举例

位运算规则

运算符号 运算符 含义 举例
& 如果对应位都是1,则结果为1,否则为0
0&0=0
0&1=0
1&0=0
1&1=1
| 对应位只要有一个为1,那么结果就是1,否则为0
0|0=0
0|1=1
1|0=1
1|1=1
~ 如果位为0,结果是1;如果位为1,结果是0
~0=1
~1=0
^ 异或 如果对应位相同,则结果为0,否则为1
0^0=0
0^1=1
1^0=1
1^1=0
<< 左移 左操作数按位左移右操作数指定的位数
0<<1=0
1<<1=2
>> 右移 左操作数按位右移右操作数指定的位数
0>>1=0
1>>1=0

位运算举例

1、2的倍乘或倍除

int int128 = 128;
int int156 = int128 << 2;
int int32 = int128 >> 2;

2、数值交换

b = a^b;
a = a^b;
b = a^b;

3、IP形式转换

public static int ipv4String2Int(String ipv4) {
    String[] ips = ipv4.split("\\.");
    int ip1 = Integer.parseInt(ips[0]) << 24;
    int ip2 = Integer.parseInt(ips[1]) << 16;
    int ip3 = Integer.parseInt(ips[2]) << 8;
    int ip4 = Integer.parseInt(ips[3]);
    return ip1 | ip2 | ip3 | ip4;
}
public static String ipv4Int2String(int ipv4) {
    int ip1 = ipv4 >>> 24;
    int ip2 = ipv4 << 8 >>> 24;
    int ip3 = ipv4 << 16 >>> 24;
    int ip4 = ipv4 << 24 >>> 24;
    return ip1 + "." + ip2 + "." + ip3 + "." + ip4;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐