sql位运算符

位运算符——与(&)、非(~)、或(|)、异或(^)

位运算符的计算主要用在二进制中。
实际开发中也经常会遇到需要用到这些运算符的时候,同时这些运算符也被作为基础的面试笔试题。
所以了解这些运算符对程序员来说是十分必要的。
于此,记录下我所理解的运算符:

如果以开关开灯论:
有这样两个开关,0为开关关闭,1为开关打开。

与(&)运算
与运算进行的是这样的算法:

0&0=0,0&1=0,1&0=0,1&1=1
1
在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开。
理解为A与B都打开,则开灯,所以是1&1=1
任意一个开关没打开,都不开灯,所以其他运算都是0

通俗理解为A(与)&B都开则开,否则关

非(~)运算
非运算即取反运算,在二进制中1变0,0变1
110101进行非运算后为
001010即1010

或(|)运算
或运算进行的是这样的算法:

0|0=0,0|1=1,1|0=1,1|1=1
1
在或运算中两个开关是并联的,即一个开关开,则灯开。
如果任意一个开关开了,灯都会亮。
只有当两个开关都是关的,灯才不开。

理解为A(或)|B任意开则开

异或(^)运算
异或运算通俗地讲就是一句话
同为假,异为真
所以它是这样的算法:

0^0=0,0^1=1,1^0=1,1^1=0

原文链接:https://blog.youkuaiyun.com/chijiandi/article/details/79022473

 

&运算符实例

1.负数与正数 
-4 & 10 : 
-4转换二进制:1000 0100 
10转换二进制:0000 1010 
负数需要用补码(原码取反+1得补码,符号位不变),-4补码为:1111 1100 
1111 1100 与 0000 1010 按位与得:0000 1000 = 8 
所以-4 & 10 为 8

2.负数与负数 
-3 & -7: 
-3转换二进制:1000 0011,补码:1111 1101 
-7转换二进制:1000 0111,补码:1111 1001 
按位与得到:1111 1001 
符号位为负数,需要转换:(补码-1取反码后得原码)1000 0111 = -7 
所以-3 & -7 为 -7

3.正数与正数 
5 & 15 
5 转换二进制:0000 0101 
15转换二进制:0000 1111 
按位与得到:0000 0101 = 5 
所以 5 & 15 为 5

原文链接:https://blog.youkuaiyun.com/w413276727/article/details/53606703

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值