其他分享
首页 > 其他分享> > 基础拾遗:除了&和&&的区别,你还要知道位运算的这5个运算符

基础拾遗:除了&和&&的区别,你还要知道位运算的这5个运算符

作者:互联网

01 前言

那年刚找工作那会,就碰到过这么一个简单的题目1.都是作为逻辑与的运算符。2.&&具有短路功能,计算出前者false,就不需计算后者的true or false。后来在微信群里看到有人问类似的问题,引发了我的思考。

02 &和&&的区别

相同点 &和&&都可作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,其结果才为true,否则,只要有一方为false,则结果为false。(ps:当要用到逻辑与的时候&是毫无意义,&本身就不是干这个的) 不同点

if(loginUser!=null&&string.IsnullOrEmpty(loginUser.UserName))

总结

读者黑人问号:我工作三年,你就告诉这点东西,这不是浪费我点击来阅读的流量费?


4183a91844c70b302494ed06e2ff0738.jpeg


03 位运算的使用

直接进入主题位运算,这篇文章本身没有任何难度,工作中甚至用不到位运算,埋个伏笔: 在掌握位运算之前,应该明确位运算的两个概念。

常见的5个位运算符

3.1 位逻辑与运算:&

& 与运算是将两个运算对象按位于进行与运算。规则是:

1&1=10&1=00&0=0

如图:

57a352c79b046a910a1fc75a30750f38.jpeg

15的二进制是(ps:16位int,32位int多打16个0浪费流量)

0000 0000 0000 1111
 ```20的二进制是```csharp
    0000 0000 0001 0100

15&20的结果是4

0000 0000 0000 11110000 0000 0001 010015&20 结果:
 0000 0000 0000 0100

3.2 位逻辑或运算:|

| 位逻辑或运算是将两个运算对象按位进行或运算,运算的规则是

1|1=1
    1|0=1
    0|0=0
    两位对比有一个1即为1

如15|20的结果计算结果就是31

d13ca21eb5f839367ef58143d25d2780.jpeg


0000 0000 0000 11110000 0000 0001 010015|20结果0000 0000 0001 1111

3.3 位逻辑异或运算: ^


7d3f7bd9a0127fc8c42f8e14f79ad6fd.jpeg

^ 位逻辑异或运算 是将两个运算对象按位进行异或运算,规则是:

1异或1等于0
1异或0等于1
0异或0等于0

即:相同得0,相异得1。15^20= 27(0001 1011)

0000 1111(15)
 0001 0100(20)
 15^20运算后的结果
 0001 1011(27)

3.4 位逻辑左移运算<<


f13c032fa39e042627d45b40f4a95269.jpeg

<< 位逻辑左移运算是将按位向左边移动若干位,左移后空出的部分为0。

比如15的二进制0000 1111 左移8位就是1111 0000 0000

0000 0000 0000 111115>> 左移8位的结果:0000 1111 0000 000015<<8=3840

左移3位(15<<3)就是0111 1000结果是120 a<<1 =2 a<<2 =4 a<<3 =8

结论 a左移n位就是相当于a乘2的n次方

3.5 位逻辑右移运算 >>


d8c95da4bfeaca58d8abdf3cca6b3a4e.jpeg

位逻辑右移运算是将按位向右边移动若干位,右移后空出的部分为0 比如 0000 1111(15)左移3位(15<<3)就是0000 0001(1)

0000 1111(15)左移3位结果是:0000 0001(3)

右移相当于整除,右移1位相当于除以2的1次方,右移2相当于除以2的2次方。(ps:这个除法是计算机的除法,你懂得)

04 位运算还能干嘛

位运算的骚操作其实挺多的,篇幅不够,所以留着下一篇写。例如:

关于其他的一些基础知识概念的总结: 位、字节、字符(英文字母)、汉字、KB、MB、GB、TB的关系


标签:20,15,运算,拾遗,运算符,&&,0000,0001
来源: https://blog.51cto.com/15002954/2550632