1.6逻辑运算

1.6逻辑运算

逻辑运算在我们今后的编程中会经常使用到的。

本节必须掌握的知识点:

u 掌握逻辑运算

计算机中所有的数据都是使用二进制保存,但是这些复杂的电路又是如何做运算的呢?

1.6.1【逻辑运算】

逻辑运算是CPU运算的本质,不管是计算机能处理多么复杂的事情,它最终还是通过电路的开关来实现的。逻辑是指对某个事物的推理,“真”和“假”是两个对立的逻辑状态,逻辑运算是指用数学符号来表示逻辑状态,以便于用数学方法研究逻辑问题。我们通常将电路通电状态表示为“真”,用数字“1”表示,不通电表示为“假”,用数字“0”表示。“或”、“与”、“非”是三种基本逻辑运算,计算机逻辑运算也包含“异或”、“位”。

1、或运算

或运算:汇编中用“OR”表示,C语言中用“|”来表示,可以理解为“或者”,即只要有一个条件满足就为“真”,用电路来描述:只要有一条电路通电这条总电路就能通电,原理如图1-6-1:

图1-6-1:OR运算等效电路

这是一个并联电路图,不管是A为闭合状态、还是B为闭合状态,还是AB都处于闭合状态,电灯泡都能亮。我们把电路图用符号0和1来表示,或运算表示只要有一个为1,结果就为1。我们来看一个宽度为8的或运算:

2、与运算

与运算:汇编中用“and”表示,C语言中用“&”来表示,它表示两个条件都成立才能为真,即两个都为1结果为1,其他为0,电路实现原理如图1-6-2:

图1-6-2:AND运算等效电路

这是一个串联电路图,A和B都为闭合状态,灯泡才能亮。如果有一个开关没有闭合,灯泡是不能亮的。即两个都为1,结果为1,只要有一个为0 ,结果为0。

我们来看一下下面的运算:

3、异或

异或:汇编用“xor”表示,C语言中用“^”表示,这个不是太好理解,但是它很有用。它表示两个值不同为真,相同为假。即两个值如果都为0或者1,结果为0。一个为0,而另一个为1,结果为1。如图1-6-3所示;

图1-6-3:XOR运算等效电路

这条电路A和B必须是相反的两种状态灯泡才能亮,如果AB都断开,灯泡无疑是不亮的,如果AB都连上,正负极抵消,灯泡同样不能亮。我们来看一下下面的运算:


4、非运算

非运算:汇编中用“NOT”表示,C语言中用“!”表示,它是对某个值求反的运算。如 !0 = 1;!1 = 0;非真即为假,非假即为真。

我们来看一下下面的运算:

5、左移运算

左移运算:在右边添0,数据往左移动,用符号“<<”表示,如“0010 << 1 ”表示将0010左移1位,结果为0100。

6、右移运算

右移运算:在左边添0,数据往右移动,用符号“>>”表示,如“0010 >> 1”表示将0010右移1位,结果为0001。

1.6.2【逻辑运算的具体应用】

例1:计算机通过逻辑运算实现四则运算。

计算机的本质是逻辑运算,不管多么复杂的运算最终都回归到逻辑运算。可是我们生活当中的计算并不是逻辑运算,这又是怎么回事呢?那么CPU是如何通过逻辑运算做“+、-、*、/”的呢?虽然我们平常生活中并不会碰到这个问题,但是可以做一些简单的了解,能帮助我们更清楚地认识计算机的本质。

我们来看一下CPU是如何算出2+3等于5的。

计算机如果要做运算,必须要把2和3分别存储下来,就是先用几条线路来表示它们。前面我们学数据宽度时讲到容器,那我们就用最少的容器来保存2和3。假设有BYTE x保存2,BYTE y 保存3,那这两个容器里的数值是这样的:

这个结果放在哪呢?我们再拿一个容器R来保存,假设它的宽度也是8位,此时R的值为:0000 0001。

第二步,CPU再让它们进行与运算:

这一步是为了测试上一步有没有结束。

再将这个结果左移1位,如果这个值等于0,那R就是计算的结果,不为0重复之前的操作。0000 0010左移1位等于0000 0100,不为0,所以继续运算, 将R容器里的值放到x容器中,把与(and)的值放在y里,

   x: 0000 0001

   y: 0000 0100

继续之前的操作,先将它们异或,值为0000 0101,将这个值存到R容器。再将x容器和y容器里的与运算,值为0000 0000。将它左移一位还是0,所以R的值就是我们计算的结果,即为0000 0101,转换为十进制就是5。

2+3对于我们来说,幼儿园就会算了,而计算机却要执行如此多步骤。其实计算机很笨,它只会按照一定规则去操作,但是它却靠着比我们人类快无数倍的速度帮我们人类解决很多棘手的问题。

例2:获取某个数的第N位的值。

比如我们的寄存器每一位代表不同的含义,假如需要判断某一位的值,或者更改某一位的值、而其他的值保持不变,那怎么才能做到呢?如有个数值,我想知道它的第3位是否为1,应该怎么运算呢?根据前面的逻辑运算,我们知道与运算的法则是“有0为0,两个都为1才为1”,所以我们可以设置一个第3位为1的值,无论我们要测试的值是几位数,我们只需要将它与0100进行与运算即可。当这个值与“0100”进行与运算,只能是两个结果,一个结果为0,一个结果为 0100,也就是结果只有两种情况:“0”和“非0”,若为0,这个数值的第3位为0,反之,不为零。

所以我们可以利用与、或的特点,我们来验证一下,假设有个要测试的值为8F,我们要测试它的第5位是否为0。

根据之前的方法,我们将它和“0001 0000”相与:

例3:加密解密

异或在加密算法里经常遇到,两次异或同一个值,就会还原成异或原来的值。这个需要异或的值我们叫做密钥。采用异或加密的时候,密钥的作用很关键。谍战片里的那些电报也是加密的,常常因为一本密码本剧情起伏不断,可见密钥的重要性。

比如我们要加密0x2015,密钥为:0x54计算如下:

加密:每两位十六进制数分别与54进行异或:


u下一节进入汇编章节。

练习:

1、八进制数2-5在计算器中的结果是:1777777777777777775,为什么?2、使用异或对87AD6进行加密后再解密,加解密密匙:5 3、只用逻辑运算计算2-3=?(涉及内容:逻辑运算、移位、数据宽度)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容