6个基础位运算符和4个逻辑运算符

写在前面:大大小小的位运算和逻辑运算,自己见的倒是挺多的,也基本没有错误。但是上次在面试的时候,面试官问我请你说说Java的位运算有哪些,我脑子一下就乱了,你要是考我答案我倒是知道,但是让我自己全部说出来,就有难度了。于是,借此机会做一个总结。。。。。。




然后再次反思了自己所学的知识,认为一定要有相应的体系结构,不然知识就是乱的(感觉自己学了很多,但真的让你说的时候,又没有对应的主线将知识串起来),而且极易忘记。



1、6个基础位运算符

基础位运算,针对二进制数字的计算。在很多代码的底层都是利用位运算来提升程序执行的效率。当然我们在做一些算法题的时候也可以这么做。

分享一个自己曾经记录的一个用于判断单双数的代码

//如果num是单数,那么其对应的二进制末尾数字一定是1
//000...101 -- 5
//000...001 -- 1
//000...001 -- 1 结果等于1,表示num为单数

//000...110 -- 6
//000...001 -- 1
//000...000 -- 0 结果等于0,表示num为双数
if(num & 1 ==0) {
    //双数后的方法体
}



位运算针对的是数字(二进制)计算

符号描述运算规则
and&两个位都为1时,结果才为1
or|两个位都为0时,结果才为0
xor^异或两个位相同则为0,相异为1
not~取反0变1,1变0
shl<<左移各二进位全部左移若干位,高位丢弃,低位补0
shr>>右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)



2、4个逻辑运算符

逻辑运算针对的是boolean值的运算

逻辑运算又称布尔运算,它的结果应该是一个真假值,也就是true还是false。



1)&&:短路与运算。同为真时才为真。如果遇到第一个为false,后面的就不再运算,直接false

4>1&&3>0 -> true&&true -> true
1>4&&7>2 -> false&&... -> false



2)||:短路或运算。同为假时才为假,也就是说有一个为真即为真。如果遇到第一个是true,后面的也不再计算,直接true

2>3||3>2 -> false&&true -> true
5>3||2>4 -> true&&... -> true



3)!:非运算。! true=false,! false=true。只能对布尔值进行操作

!true==false -> false==false -> true
!true==true -> false==true -> false



4)^:异或运算。相同的为false,不同的为true该符号与位运算的异或相同,我们需要区别它们在不同的位置上的具体含义

true^true -> false
false^false -> false
    
true^false -> true
false^true -> true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默辨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值