位运算符与逻辑运算符的区别

博客介绍了位运算和逻辑运算符相关知识。位运算先将数据转为补码逐位运算,包括按位与、或、非、异或;逻辑运算符有与、或、非。还指出二者区别,逻辑运算符仅针对布尔值,有短路情况,位运算可对数值运算且无短路情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位运算是将数据先转换为补码形式,再逐位(bit)按规则运算

位运算包括“按位与”(运算符“&”)“按位或”(运算符“|”)“按位非”(运算符“~”)“按位异或”(运算符“^”)

“按位与” 运算符“&” --全1为1,否则为0

a  000000110

b &000111111

c  000000110

“按位或” 运算符“ |” -- 规则“全为0则0,否则为1”

a 0000 1011

b “|” 0000 1100

c 00001111

“按位非” 运算符“~”--规则“遇0则1,遇1则0”

a 0000 1101

b“|” 1111 0010

“按位异或”运算符“^” --运算规则“相同为0,否则为1”

a 0000 1101

b^ 0000 0101

c 0000 1000

注意:按位异或(^)可逆

a^b^b=a;

逻辑运算符:

运算符用法含义
&&op1&&op2逻辑与
||op1||op2

逻辑或

 

!op逻辑非

逻辑运算符规则:

逻辑与   op1&&op2 全真则真,否者为假

逻辑或  op1||op2 全假为假,否则为真

逻辑非 !op  变真为假,变假为真

逻辑运算符与位运算符的区别

1、逻辑运算符只能针对Boolean进行逻辑运算,而位运算还可以对数值进行逻辑运算

2、逻辑运算符有短路情况,位运算不会

      比如:

if((a=20)==20)||(b=20)==20)            System.out.println("b=",b);



 if((a=20)==0|(b=20)==0)                     System.out.println("b=",b)

 

 

上边的代码中,由于(a=20)==20为真,逻辑或运算停止,b为0

而下面的代码中,由于是按位或,所以首先计算两边的值,即true|true,结果为1,b为20

y

 

 

 

以上就是逻辑运算符与位运算符的差异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值