核酸检测中的逻辑和位运算

最近这段时间,整个深圳都算是严阵以待。

停止公共交通;多个区被管控,不允许进出;每天核酸检测筛查。

小毕老师目前差不多就是这样的状态。每天小区内都有核酸检测,每天都需要进行核酸检测的检查。

同时小毕老师也发现,现在的核酸检测已经从单独检测变成了10混1的混合检测。能更加适合在大规模人群中尽可能快速地筛查出感染人员。

也就是说一旦检测出阳性,则立马对这十人进行单独隔离和检测。

如果小毕老师用计算机的角度去看待这个问题,将情况换做真假值(True of False)与逻辑运算,令阳性为T,阴性为F,则最终的核酸检测结果是10个TF或起来的结果——只要任意一人出现T,则真就判定结果就是T。

所以今天就来讲一讲计算机的逻辑运算。

计算机的逻辑运算

主要有三类:&&(且),||(或),!(非)

与生活中的描述基本一致,且则表明需要同时满足:例如外面天气没下雨且操场开放且我没生病,我就出去跑步。否则我就在家休息。

核酸检测中的逻辑和位运算

而或表明只需要满足其中之一即可。外面天气下雨或者操场不开放或者我生病了,我就在家休息。否则就出门跑步。

核酸检测中的逻辑和位运算

而非则表示下面的内容全部取反,真变假,假变真。其实很明显看到,小毕老师我刚刚举的两个跑步的例子就是if的内部是完全相反的,实际上就是一个取反过程,也就说:

核酸检测中的逻辑和位运算

当然。我们知道目前来说,计算机的真假值可以以0和1来表示。所以也就是一个个的0和1进行了且或非的运算。

实际上计算机还有一个更加类似,但是又有些许不一样的运算。专门处理一连串的01的运算方式。叫做位运算。

计算机的位运算

当然首先我们要明白一点,一连串的01是什么。

例如0101,本质上来说,我们认为是一个数字的二进制表示,也就是这个数字本身是十进制下的5。(如果对进制转换有疑惑的可以查看以前的文章)

那么位运算的本质,实际上是一连串01,然后按照每一位做且或非的运算。

位运算下的且是&,或是|,非是~。

例如0101 & 1011:

核酸检测中的逻辑和位运算

每一位做类似的逻辑运算且即可。相应的或与非也是类似,都是对于每一位的操作,所以叫位运算。

核酸检测中的逻辑和位运算

接下来我们再来介绍一个位运算,也是今天的重点。

计算机的位运算——异或

异或运算,操作符为:^。

异或简单描述为,相同为0,相异为1。

(注意位运算,是每一位互相运算)

核酸检测中的逻辑和位运算

那异或有什么用呢?我们可以来看下面这个式子:

核酸检测中的逻辑和位运算

也就是说,两个相同的数字,异或的结果为0。

然后我们再看一下与0异或的结果。

核酸检测中的逻辑和位运算

因为1与0异或结果为1,0与0异或结果为0。那么,任何数字x与0异或都是x它本身ok,现在小毕老师便提出一个问题。

问题——公寓筛查

公寓核酸检测,每次登记检测用户的房间号,总共有n个人,故一次核酸检测会登记n个房间号。第二轮核酸检测后发现只检测了n-1名住户,现只知道前两轮的登记情况,问谁未做核酸检测。

简单描述一下,现在有2*n-1个数字,其中有n-1个数字出现了2次,有1个数字只出现了1次,找出只出现了一次的数字。

解决

实际上这是异或的经典问题。因为除了目标数字之外,其他数字都只出现了2次。而出现两次的数字异或结果为0,0异或其他数值均为其他值。所以把所有数字异或后的结果,即为只出现了一次的数字。

这边可以类比成两个相同的数字在异或下就等价于加法下的相反数,一操作就抵消了。所以最后剩下的数字就是只出现了一次的数字。

代码

核酸检测中的逻辑和位运算

零基础程序语言入门班

零基础程序语言入门班详情介绍

学员要求

对编程有兴趣,零基础的孩子。

上课时间

每周日下午2-5点

上课地点

福田区

师资介绍

何老师,计算机专业硕士保送生,现役ACM-ICPC队员,今年获得ICPC银川站金牌,CCPC银牌,EC铜牌以及邀请赛金牌。何老师不仅参赛成绩斐然,在教学上也有丰富经验,曾担任2019年CSP-S提高组集训班老师,以及数据结构专题班老师,教学细致耐心。

课表详情:

核酸检测中的逻辑和位运算

详情可扫描二维码联系余老师咨询了解

核酸检测中的逻辑和位运算

毕莘教育咨询(深圳)有限公司围绕信息学竞赛普及组、提高组、省赛、国赛进行培训,同时提供与信息学相关的高校自主招生政策咨询。教研团队由国内顶校师资构成,深圳本地教学团队由来自清华、北大等顶尖名校的硕士、博士研究生及NOI、ACM- ICPC退役选手组成。自成立已开展多次培训,服务学生数百人次。

原创文章,作者:深圳信息学_中小学编程_编程培训_信息学竞赛_毕莘教育咨询(深圳)有限公司,如若转载,请注明出处:深圳信息学_中小学编程_编程培训_信息学竞赛_毕莘教育咨询(深圳)有限公司

联系我们

教务老师:余老师
联系电话(微信同号):14774755240
在线咨询:点击QQ在线咨询

QR code