因此,前一个的深度等于后一个深度加一,所以undefined或null的深度应该是-1(-1加1等于0,这样定义的话,使最后一个节点的计算更方便而已)。...修改 我们用三目运算符代替原先的或运算符: function depth(node) { return node ?...node.depth : -1 } 或者说用双问号运算符,它的用法是a ??...b,当a为null或undefined时才会取b,否则取a: function depth(node) { return node?.depth ??...next: { val: 4, depth: 0, next: undefined } } } 后记 JS
目录 逻辑与(and) 逻辑或(or) 逻辑非(not) 人生小感悟 ---- 昨天我们学习了 if 嵌套语句的基本语法,并结合实际案例学习基本用法,虽然 if 嵌套语句可以很好的解决我们的问题,但是有时却让代码显得有些复杂了...逻辑与(and) 分析一下,我们不难发现,如果想考驾照,那么年龄这项条件,其实就两个,一个是大于等于18周岁,还一个是小于等于70周岁,这俩条件必须同时满足才行,因此这其实是一个并且的关系,所以我们可以用...Python 中的 and 连接条件语句,and 的中文意思就是和(并且)的意思,在编程中有个专业的叫法,称之为逻辑与。...逻辑或(or) 除了以上这种需要同时满足的情况,还有一种情况,那就是或者,比如我们登录的时候,我们一般会有两种的方式,一个是用手机号登录,还有一种是用电子邮箱号登录,两种只要满足一种就可以。...虽然手机号不匹配,但是邮箱号是匹配的,因此一样可以登录成功,这种或者的关系,我们在 Python 中用 or 表示,即逻辑或。
说明 我们常说的是 与运算 只有表达式都为 true 时,才返回 true,否则返回 false(口诀:全真才真,一假则假) 理解误区:&& || 直接返回的是布尔值?...与运算 && 答案是否定的:在与运算符在计算过程中,自左向右执行判断表达式,若当前表达式转为布尔值为false,则返回当前表达式的值否则将会继续执行,直到最后一个表达式,不再进行判断直接返回该表达式的值...简单说 逻辑与是一种短路逻辑,如果左侧表达式为 false,则直接短路返回结果,不再运算右侧表达式。...user && console.log("变量没有赋值")); //返回提示信息“变量没有赋值” 或运算 || 在或运算中执行方式和与运算一致,只是判断false才继续执行直到true或执行到最后一个表达式
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。...1.与运算符 与运算符用符号“&”表示,其使用规律如下: 两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。...2.或运算符 或运算符用符号“|”表示,其运算规律如下: 两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。...b 异或的结果是:"+(a^b)); } } 运行结果 a 与 b 异或的结果是:13 分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律...,一般情况下,在逻辑与控制中会经常使用关系运算符,用于选择控制的分支,实现逻辑要求。
说来惭愧,JS基本的与或运算都没掌握完全,下面说一下与或运算的结果 1.与运算(&&) 与运算有可能返回五种结果,true、false、null、NaN、undefined 运算规则如下 1.与运算所有项为...= 'www'; let c = false; let d = true; a && b; //www a && b && c; //true c && a; //11 2.与运算有...false包括(0、false、null、NaN、undefined) null && false; //null false && null; //false NaN && null; //NaN 2.或运算...(||) 或运算同样可能返回五种结果,true、false、null、NaN、undefined 1.有一项不为false时返回第一个不为false的值 NaN || 1; //1 'str' ||...0、false、null、NaN、undefined) null || false; //false false || null; //null NaN || null || 0; //0 以上是与或运算的规则
本文主要介绍C语言中按位与、按位或、按位异或三个操作符的使用。 该三个操作符中的位,代表的是二进制位。 按位与:& 运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。...(负数按补码形式参加按位与运算) 实例: #include int main() { int a = 3 & 5; printf("%d ", a); return 0;...经过按位与的操作,得到的补码为:0000 0000 0000 0000 0000 0000 0000 0001. 故输出结果为1....按位异或:^ 运算规则:当两个数的二进制相同时,结果为0,否则为1。...如果有什么疑问或不同的见解,欢迎评论区留言哦。
: 条件控制语句 , 控制程序分支 ; 循环控制语句 , 控制程序循环 ; 逻辑 运算符 列举 : && : 逻辑与运算 , 两个操作数都为 true , 最终结果才为 true , 只要有一个操作数是...: 逻辑非运算 ; 2、逻辑与运算符 && && 逻辑与运算符 : 两个操作数都为 true , 最终结果才为 true , 只要有一个操作数是 false , 结果就是 false ; && 逻辑与运算符...逻辑与运算符 && // 两个操作数都为 true , 运算结果才为 true console.log(true && true); // 只要有一个操作数为...false console.log(true && false); // 短路效果 console.log(false && true); 3、逻辑或运算符...|| || 逻辑或运算符 : 两个操作数都为 false , 最终结果才为 false , 只要有一个操作数是 true , 结果就是 true ; || 逻辑或运算符 短路效果 : 该操作符的 2
正文 ---- 位运算符 位:二进制简称“位”,是二进制计数系统中表示小于 2 的整数符号,一般用 1 或 0 表示,是具有相等概率的两种状态中的一种。...(摘自百度百科) 位运算符用来对二进制位进行操作,Java中提供了如下所示的位运算符(操作数只能为整型和字符型数据): & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 除 ~ 以外,其余均为二元运算符...此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。(摘自百度百科) 打个比方:2-1是怎么计算的?...| 按位或 |:如果相对应位都是 0,则结果为 0,否则为 1。...^ 按位异或 ^:如果相对应位值相同,则结果为 0,否则为 1。
Java-异或运算 异或运算法则 异或的运算方法是一个二进制运算: 例图: 总结 例题1 例题2:136....异或的运算方法是一个二进制运算: 1^1=0 0^0=0 1^0=1 0^1=1 两者相等为0,不等为1. 例图: 总结 1、异或是一个数学运算符。应用于逻辑运算。...2、真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值相异结果为真。...3、n^0=n n^n=0,即任何数与0进行异或,为它本身,两个相同的数进行异或运算,会得到0。...所以,我们对于上边的解题办法就有了: 首先对1到1000,这1000个数进行异或运算,然后再把上边的1001个数进行异或运算,最后,再对这两个结果进行异或运算,就会得到唯一的那个n。
前言:今天的内容是对js的部分基础内容过一遍,没有细细的去分析,只是一篇概要。...js中常用的运算符有 算数运算符 递增和递减运算符 比较运算符 逻辑运算符 赋值运算符 算术运算符 概念:算术运算使用的符号,用于执行两个变量或值的算术运算。...、变量等以能求得数值的有意义排列方法所得的组合 简单理解:是由数字、运算符、变量等组成的式子 递增和递减运算符概述 如果需要反复给数字变量添加或减去1。...概念:比较运算符是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作成运算结果 运算符 说明 案例 结果 < 小于 1<2 true > 大与 1>2 false...概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,后面开发中经常用于多个条件的判断 逻辑运算符 说明 案例 && “逻辑与”,简称"与" and true&&false || “逻辑或
echo 响应,fi 结束字句 then # [ $a == $b ] 用绝对等于符号判断两个字符串 echo "a 等于 b " fi --------- 逻辑运算符号符合条件就返回...或运算 -o 与运算 -a [ $a !...= $b ] # 变量:a 不等于 b, 非运算 [ $a -lt 60 -a $b -gt 15] # 变量:a 15 与运算 [ $a -lt 100 -o $b...-gt 100 ] # 变量:a 100 或运算 && # 相当于与运算,满足所有条件;也用于前面成功完成才执行后面 || # 相当于或运算,满足一个条件就可以;前面无论成功失败就执行后面
前言: 位运算符是用来对二进制位进行操作的 c语言中有6种位运算符: & 按位与 [链接]: https://blog.csdn.net/weixin_42837024/article/details/...98736834 | 按位或 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98745019 ^ 按位异或 [链接]:https:...details/98734787 >> 右移 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98734787 本篇讲 按位取反 ~ 运算符
一、逻辑与 && 和 逻辑或 || 运算符重载 1、逻辑与 && 和 逻辑或 || 运算符 要求 逻辑与 && 和 逻辑或 || 运算符 是 可以重载的 , 这两个操作符是 特殊操作符 ; 短路规则 :...其 内部 内置了 短路 规则 , 也就是 前面的 逻辑与 && 运算 , 只要得到 false 结果 , 那么后续的逻辑与运算也没要运行 , 整个表达式的结果都是 false ; 前面的 逻辑或 ||...的运算符重载 ; 连续运算规则 : 逻辑与 && 和 逻辑或 || 运算符 重载的函数 , 需要 连续执行 , 比如 3个对象进行连续的 逻辑与 && 和 逻辑或 || 运算 ; 返回值需要满足上述要求..., 一般为 bool ; 2、逻辑与 && 运算符重载 使用 成员函数 实现 逻辑与 && 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载的运算符 ,...逻辑或 || 运算符重载 使用 成员函数 实现 逻辑或 || 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载的运算符 , 2 个对象 Student
逻辑运算符可以将两个或多个关系表达式连接成一个或使表达式的逻辑反转。最常用的逻辑运算符有:“非”(¬)、“与”(∧)、“或”(∨)。 运算符 效 果 ∧(逻辑与) 将两个表达式连接成一个。...两个表达式必须都为 $true$,整个表达式才为 $true$ ∨(逻辑或) 将两个表达式连接成一个。必须有一个或两个表达式为 $true$,才能使整个表达式为 $true$。...它使一个表达式从 $true$ 变成了 $false$,或者从 $false$ 变成了 $true$ ∧ 运算符 与(∧)是一个二元逻辑运算符。...逻辑或(logical or)又称逻辑析取(logical disjunction)、逻辑选言,是逻辑和数学概念中的一个二元逻辑算符。...参考资料 https://zh.wikipedia.org/wiki/逻辑运算符 http://c.biancheng.net/view/1807.html
在程序运算中,数值都是转换成机器码(二进制)再进行加的,而与或非就是建立这这种基础上,以二进制进行运算。...与 & 1$0=0 或 | 1|0=1 非 ~ ~1=0 <?
按位取反~运算 首先我们来看按位取反的概念 按位取反运算符:对数据的每个二进制位取反,即把0变成1,把1变成0.
移位运算符是C++中常用的算术表达式 但是在前端和硬件通过蓝牙通信时我们也会经常用到 移位运算符在程序设计中,是位操作运算符的一种。...移位运算符可以在二进制的基础上对数字进行平移。...按照平移的方向和填充数字的规则分为三种: << //左移 >> //带符号右移 >>> //无符号右移 左移运算符(<<)规则 按二进制形式把所有的数字向左移动对应的位数,高位移出...1<<3 //等于 1*2³ 8 2<<3 //等于 2*2³ 16 右移运算符(>>)规则: 按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零...10>>3 //等于 1 100>>3 //等于 12 无符号右移运算符规则: 按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。
即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^00010001=10110000 0^0=0,0^1=1 0异或任何数=任何数 1^0=1,1^1=0 1异或任何数...-任何数取反 任何数异或自己=把自己置0 (1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。 ...10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6 (2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。...10100001,b=00000110 a=a^b; //a=10100111 b=b^a; //b=10100001 a=a^b; //a=00000110 (3)异或运算符的特点是...:数a两次异或同一个数b(a=a^b^b)仍然为原值a.
目录 异或 异或的性质 示例1:值交换 示例2:找出现一次的元素 示例2代码: ---- 异或 英文为exclusive OR,缩写成xor,符号是^ a b a^b 0假 0假 0假 0假 1真...1真 1真 0假 1真 1真 1真 0假 异或的性质 1、a ^ a=0 任何数字和自己异或结果是0 2、a ^ 0=a 任何数字和0异或还是他自己 3、a ^ b = b ^ a 异或运算具有交换律...4、a ^ (b ^ c) = (a ^ c) ^ b 异或运算具有结合律 我们依赖这四条性质就能做很多操作,例如下面的两个示例: 示例1:值交换 x=5 y=7将两个变量的值通过异或运算符进行交换...那么成对的数在异或过程中都会被消耗掉,只有单独存在的一个数不会被配对消耗掉,故而可以留存到最后。...注: 这里主要用到的是异或的n ^ n = 0的性质,来逐一消耗成对的数。
与& 与运算法则:两位同时为“1”,结果才为“1”,否则为0 5 & 1 = 1 或| 或运算法则:两位其中一个为“1”,结果为“1”,否则为0 5| 1 = 5 非 非运算法则:单目运算符 二进制原码...0000 0000 0000 0101 2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110 最高位代表符号位 1 表示负数,0 表示正数 ~5 = -6 异或^...异或运算法则:两位不同,结果为“1”,否则为0 5^1 = 4 左移 左移运算法则:将数值向左移动若干位,用0补足 5<< 1 = 10 右移 右移运算法则:将数值向右移动若干位 5>>1 =
领取专属 10元无门槛券
手把手带您无忧上云