

一例逻辑异或比较
source link: https://yihui.org/cn/2018/01/logical-xor/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一例逻辑异或比较
谢益辉 / 2018-01-18
昨天在审阅谭显英壮士提交的一个重要 DT 合并请求中的 JS 代码时,注意到这样一个 if
语句:
if ((flagSel && !flagRowSel) || (!flagSel && flagRowSel)) {
...
}
好家伙,这是传说中的圆环套圆环娱乐城咩。每当涉及到两个逻辑变量的比较操作时,我都会在纸上画一个表格,来看清楚到底在比什么。比如上例何时会是 true
:
flagRowSel true false flagSel true x √
false √ x
这样就很清楚了:当 flagSel
和 flagRowSel
取值不同时,这个逻辑比较的结果便是 true
。所以我们就可以把圆环套圆环娱乐城的墙拆了,简化为:
if (flagSel !== flagRowSel) {
...
}
说白了,这就是一个异或(XOR)的比较,而异或说白了其实也就是看两个逻辑变量是否相异(必须一个 true
一个 false
才能得到 true
)。由于逻辑变量的特殊性,取值的可能性只有两个,那进一步简化就是:
function XOR(a, b) {
return a !== b;
}
最终我用的是 if (flagSel === flagRowSel)
,这里我事先把 flagRowSel
的取值反过来了,以使得它跟 flagSel
的意思相同,都代表 DT 表格中的一行是否没有被选中。感觉这样更通顺一些。
写代码跟说话一样,要是一串逆否条件,人就很容易晕掉。比如这样的表白神句:你是不是不承认你并不是没有喜欢我?
- 是?那你就是喜欢我喽!
- 不是?那你就是喜欢我喽!
战无不胜。
Recommend
-
3
异或加密之美 #主流web弱算法科普文 小飞
-
11
大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要。 本文介绍异或运算的含义和应用。
-
12
-
9
您现在的位置:首页 --> 算法 --> 位运算小结(按位与、按位或、按位异或、取反、左移、右移) 位运...
-
10
V2EX › 程序员 图片异或加密的问题, key 已经扒出来了 heyhumor · 1 天前 · 1385 次点...
-
10
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的 JavaLib」第一时间阅读最新文章,回复【资料】,即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板。
-
10
每篇开头会提出一个问题,希望能引起你的思考,并且请你试着回答。相信在读完整篇后,你会有明确的答案。 问题:异或运算能用代数方法表示吗? A. 不能 B. 只能用加法 C. 只能用乘法 D. 加法和...
-
3
文章目录 [显示] 1、问题来源 在数据采集过程中,经常有需要采集各种联系方式,其中就包括电子邮箱地址。一些毫不设防的网站的电子邮件地址可以直接从网页源码中获取到,而一...
-
5
此系列是本人一个字一个字码出来的,包括代码实现和效果截图。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必...
-
9
单层感知机不能表示异或逻辑的证明过程 创建时间:2018-05-19 20:56 字数:191 阅读:75...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK