逻辑与,逻辑或,逻辑异或;按位与,按位或,按位异或

 


符号表达:

1
2
3
4
5
逻辑与  逻辑或  逻辑异或
 
按位与  按位或  按位异或  按位非
 
  &     |       ^       ~

 

说明:很多人不容易理解这些符号的说明,就很迷糊,这里我用简单的语言进行说明,看完相信你会有所收获!

    逻辑:带有这两个字的通常就是两个boolean表达式的运算。比如:(3>5) & (1<2)

    按位:带有这两个字的通常是十进制数或者二进制数的运算。比如:3 | 5

解释说明:

  这是我自己总结的,相信在日常的编码中你能够更深的理解这些代码的意思:

1
2
3
4
5
6
7
8
逻辑与:两边的表达式有一项为假,结果就为假。两边的表达式全为真,结果才为真。
逻辑或:  两边的表达式有一项为真,结果就为真。两边的表达式全为假,结果才为假。
逻辑异或:真假为真,真真为假,假假为假。
==============================================
按位与:两个二进制对应位都为1时,结果为1,否则结果为都0
按位或:两个二进制对应位都为0时,结果为0,否则结果为都1
按位异或:两个二进制对应位相同时,结果为0,否则结果为1
按位非:原码位为0,运算后得1,原码位为1,运算后得0

代码演示:

一个数转二进制的方法,这里就不再进行阐述。可以自行查阅文档进行学习。

我们先看逻辑操作这边的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
        int a = 5;//0000 0101
        int b = 3;//0000 0011
        System.out.println("逻辑与:" + ((a > b) & (b > 3)));
        System.out.println("逻辑或:" + ((b > 3) | (a > b)));
        System.out.println("逻辑异或:" + ((a > 3) ^ (b > 5)));
        System.out.println("逻辑异或:" + ((a > 3) ^ (b < 5)));
        System.out.println("逻辑异或:" + ((a < 3) ^ (b > 5)));
-----------------------------------------------------------------------   
结果为:
逻辑与:false
逻辑或:true
逻辑异或:true
逻辑异或:false
逻辑异或:false

按位这边的代码:

1
2
3
4
5
6
7
8
9
10
        int a = 5;//0000 0101
        int b = 3;//0000 0011
        System.out.println("按位与:" + (3 & 5));//0000 0001
        System.out.println("按位或:" + (3 | 5));//0000 0111
        System.out.println("按位异或:" + (3 ^ 5));//0000 110   
=========================================
结果为:自行验算上边的二进制转为十进制的数
按位与:1
按位或:7
按位异或:6

拓展1:&= , |= , ^=

在有些地方我们有可能会见到这样的符号:&= , |= , ^=

这样的符号其实就是一个赋值类的操作。

我们来举个例子:

1
2
3
4
int a = 5;//0000 0101
int b = 3;//0000 0011
a ^= b;
System.out.println(a);//a = a^b

  其实这个跟我们学过的+=是一个意思。

扩展2:java中用方法进行进制转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//十进制转成十六进制:
System.out.println(Integer.toHexString(10));
//十进制转成八进制
System.out.println(Integer.toOctalString(10));
//十进制转成二进制
System.out.println(Integer.toBinaryString(10));
//十六进制转成十进制
System.out.println(Integer.valueOf("FFFF", 16).toString());
//八进制转成十进制
System.out.println(Integer.valueOf("010", 8).toString());
//二进制转十进制
System.out.println(Integer.valueOf("0101", 2).toString());
//将2、8、16进制直接转为10进制
System.out.println(Integer.parseInt("1010",2));
System.out.println(Integer.parseInt("012",8));
System.out.println(Integer.parseInt("FFFF",16));
posted @   Java小白的搬砖路  阅读(1698)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示