'&'和'&&' 往年没考,今年肯定要考

1,838 阅读3分钟

& 运算符和 && 的用法和区别

&运算符一般是用来参与逻辑运算,运算结果一般为0和1两种,如果作为判断条件会分别转换为falsetrue

& 运算符

比如,在浏览器控制台输入:

false & true //0
true & false  //0
true & true  //1
false & false  //0

看的出来只要两个条件有一个为false,输出结果就是0,只有当两个条件都为true了,结果才是1

&& 运算符

控制台输入:

false && true //false
true && false  //false
true && true  //true
false && false  //false

&&输出结果,不再是0和1,而是truefalse,同样可以用来作为判断条件,但是区别在于,&&优化了运算速度,只要前面一个条件为false了,就不再管后面的条件,直接输出false

数字&数字

如果是布尔类型的值进行&运算,输出的是0和1,&&运算输出的是truefalse, 知道这个在平时开发中,差不多就够了.

但是,重点就是这个但是,但是面试官就喜欢考一些你平时不用的东西,下面来看看

3 & 7  //3
16 & 30  //16
7 & 34  //2
4 & 8  //0
18 & 24 // 16

这个输出结果,是不是突如其来,一脸懵逼,无中生友,暗度陈仓,凭空想象,凭空捏造

提示下,计算机底层都是二进制,现在自己脑袋里给他转成二进制看看有什么规律(为了看着方便,我在前面补上0,补成相同位数)

011 & 111 // 11
10000 & 11110 //10000
000111 & 100010 //10
0100 & 1000 // 0
10010 & 11000 // 10000

是不是感觉看出来了那么一点东西

数字&数字的时候,他是把两个数字都转为二进制再逐位进行比较,同时为1的时候,该位则保留为1,否则该位保留为0,最后输出结果

这个了解这个也不完全花里胡哨,至少以后再判断一个数是奇数还是偶数时,不用num%2了,可以用num&1这样不仅运算效率会增加,还能提升下逼格(主要是为了提升逼格)

数字&&数字

现在我们再来看看数字&&数字又会发生些什么

3 && 7  // 7
7 && 3  // 3

16 && 30  // 30
30 && 16 // 16

7 && 34  // 34
34 && 7 // 7
...

0 && 18 // 0
18 && 0 // 0

这个输出结果就不难看出规律了,数字&&数字当两个数字都不为0的时候,输出后面的数字,当其中一个数字为0的时候,输出0

至于原理,自己领悟...

个人博客: tiger9527.work