我终于明白了!Java的逻辑运算符和位运算符的区别!!!

这学期学过Java了,但是感觉学的不太踏实,虽然考试也结束了但还是想要把这门语言学扎实!

这周快学到了面向对象,感觉需要再复盘掌握的有:

逻辑运算符和位运算符、转义字符、流程控制语句、数组的运行原理(引用数据)

先复盘一下逻辑运算符和位运算符吧!!

  1. 什么叫做位运算符、逻辑运算符

  1. 位运算符和逻辑运算符有哪些?它们的运算规则是什么?

  1. 位运算符的运算逻辑(正数和正数运算、正数和负数进行运算)

第一:要明确什么是逻辑运算符,什么是位运算符

  • 逻辑运算符:逻辑运算符的两边比较的是布尔类型的数值,自然返回的也是布尔数值

  • 比如:12>3&&3<4; (这样子返回的结果就是布尔数值)

  • 实现代码:(非常想炫耀一下自己胡乱找的字体但是很漂亮嘿嘿嘿嘿嘿(雾))

  • 运行结果:

  • 位运算符:两边比较的是数值类型(基本数值类型byte、short、int、long等等),同样返回的结果也是一个数值

  • 比如:5&3

  • 运行代码:

  • 运行结果:

总结:逻辑运算符比较的是布尔值(true、false),而位运算符比较的是数值(数字)

第二:逻辑运算符和位运算符有哪些

  • 逻辑运算符:

逻辑运算符

含义

运算规则

&

逻辑与

两个操作数都为true,返回的结果为true;如果其中有一个为false,那么结果返回false

|

逻辑或

两个操作数中只要有一个为true,返回的结果就是true;如果两个操作数都为false,则返回false

^

逻辑异或

两个操作数的结果相同,则返回false;两个操作数的结果不同,则返回true

!

逻辑反(逻辑非)

操作数为false,结果为true;操作数为true,结果为false

&&

短路与

当两个操作数的结果都是true的时候返回true;当两个操作数的结果不全为true的时候返回false(跟逻辑与的运算规则一样)

||

短路非

当两个操作数中有一个为true,那么结果返回true

  • 举例代码为:

  • 运行结果为:

  • 位运算符:

位运算符

含义

运算规则

&

按位与

两个数都为1,结果才是1

|

按位或

两个数只要有一个为1,那么结果输出为1

^

按位异或

两个操作数相同,返回0;两个数不同,结果返回1

~

按位非

操作数为1,结果为0;操作数为0,结果为1

<<

左移运算符

将操作数左移之后,右边的空白处补0(也就是扩大2的n几次方倍,n取决于左移的个数)

>>

右移运算符

将操作数右移之后,左侧的空白处补上0(也就是缩小2的n次方倍,n取决于左移的个数)

>>>

无符号右移运算符

将操作数右移之后,左侧的空白补上o(与右移运算符号不一样)

  • 值得注意的是:右移运算和和无符号右移运算符虽然规则看起来差不多,但是实际操作起来却不一样:

  • 两者的区别在于:右移运算符,当数字为负数的时候,在最高位上补1;当操作数为正数的时候,在最高位上补0

  • 无符号右移运算符:不管操作数为正负数,都会在最高位上补0,保证输出来的结果是一个正数

第三,位运算符运算逻辑

首先需要明确三个概念:

  1. 源码:一个数的二进制的形式就叫做源码

  1. 反码:将一个数字的二进制,除了符号位之外全部取反,1变成0,0变成1,这个叫做取反

  1. 补码:将一个数字的反码+1得到反码

计算机运行的都是补码,所以我们要进行运算的话就需要得到这两个参与运算数字的补码,然后在进行相对应的运算;需要注意的是:正数的源码、反码、补码都是一样的,所以正数只需要知道其中一个(源码、反码、补码)就可以进行运算了(我非常容易在这里出错TAT);但是负数不能这样,负数就需要知道它的源码、反码、补码,然然后再进行相关的运算

正数的符号位是:0   负数的最高位是:1

举个栗子:

2&5

  • 运行代码为:

  • 运行结果为:

-4|5

  • 运行代码为:

  • 运行结果为:

总结:当正数和正数进行运算的时候不需要把他们的反码和补码都求出来;但是在进行正数和负数的运算,或者是负数和负数的运算,只要有负数的,都要求出来负数的反码和补码;进行完运算之后不要着急,只要跟负数有运算的都要在从补码、反码(减1)、源码(取反)的顺序得到结果的源码

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值