简单的逻辑运算

前言

很多人的编程能力或许很强,但是却“知其然而不知其所以然”,今天要给大家讲的是“数据的运算”,让我们可以更好的理解数据在计算机是如何存储以及运算的。

一,数据在哪里运算

现代的计算机都是根据冯诺依曼模型设计的,此模型着眼于计算机的内部构造,认为计算机主要有五大子系统组成:输入设备,输出设备,存储器,控制单元,算术逻辑单元。

数据的运算在CPU(寄存器中),高速缓冲区,主内存中都可以完成。

运行速度排序为:CPU>高速缓冲区>主存储器。

速度快的CPU价格昂贵,价格便宜的主存储器运算速度是相对较慢的。为了使计算机更有性价比,计算机通常配置了三种不同层次的存储器。

如图所示:

二,运算的分类

运算分为两大类:算数运算和逻辑运算。

今天主要给大家讲述逻辑运算。

逻辑运算分为两种:一元运算和二元运算。

如果定义了一个位作为逻辑运算的值,那么就可以进行逻辑运算了。逻辑运算通常会输入1-2个位,生成一个为。如果输入的是一个位,就称其为一元运算,如果是两个位,就称其为二元运算。

我们主要讲与,或,异或这三种二元运算,它们的运算符号分别是&,|,^

1,AND

我们通常用&这个操作符对数的每一位进行与逻辑运算,若两个补码中对应位的逻辑值均为1,则运算结果为1,若有其中一位为0,则运算的结果为零。

举个栗子:

2,OR

我们用"|"这个操作符对数据反码的对应位进行或逻辑运算,当且仅当对应位都为零时,输出结果为0,否则为1。

举个例子:

用图直观表示为:

3,XOR

异或的运行规则是当且仅当输入对应位相同时输出0,否则,输出1。

实例​​​​

三,逻辑运算的应用

掩码

上述三种逻辑运算可以用于修改位模式,可将指定的位复位,置位,反转,但是实现对位模式的修改还必须使与,或,异或的逻辑运算搭配其他的位模式使用,这个所谓其他的位模式就是掩码。

AND  

应用:使指定位复位。

1,在目标位模式需要置零的位,掩码相应位设为零。

2,在目标位模式需要保持不变的位,掩码相应位设为1。

例如,现在假设要将目标位从左往右数的五个位全都清除,那么设计的掩码就是左五位都为零。

使用一个掩码复位目标数的最后五位,怎么用逻辑运算实现呢?

OR

功能:指定位置位

1,目标位需置1,对应掩码位设为1。

2,目标位需保持不变,掩码的位置设为0。

例如,假设要把目标的最后五位置位1,其余位不变,那么掩码的最后五位就设为1,其余位设为0.

在电厂里,如何应用掩码把6号泵头打开。

XOR

使指定位反转。

1,目标位需要反转,掩码对应位设为1.

2,目标位保持不变,掩码对应位设为0.

例如,反转目标位最后五位。

实际操作一下,用掩码反转目标数的最后五位。

练习

你学会了吗?

来,做一道题测试一下。

test:

如果一个数的二进制从右向左的第3位为0,则变成1;再将结果变回原数。(答案在下期揭晓)

总结

逻辑运算学起来,好像还挺简单,但是要用它们来对位模式进行指定的修改,有时候就不那么容易了,下去后还是要多加练习。

相关推荐

  1. C语言中逻辑运算

    2024-01-25 13:20:01       27 阅读
  2. 关系运算逻辑运算

    2024-01-25 13:20:01       50 阅读
  3. C/C++逻辑运算与汇编指令关系

    2024-01-25 13:20:01       30 阅读
  4. 什么是逻辑运算短路效应?

    2024-01-25 13:20:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-25 13:20:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 13:20:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 13:20:01       87 阅读
  4. Python语言-面向对象

    2024-01-25 13:20:01       96 阅读

热门阅读

  1. k8s之安全机制

    2024-01-25 13:20:01       43 阅读
  2. K8S之HPA

    K8S之HPA

    2024-01-25 13:20:01      48 阅读
  3. 根目录逃逸Yaml

    2024-01-25 13:20:01       56 阅读
  4. HJ11 数字颠倒【C语言】

    2024-01-25 13:20:01       49 阅读
  5. linux系统nginx监控的使用

    2024-01-25 13:20:01       65 阅读
  6. P5469 [NOI2019] 机器人 洛谷黑题题解

    2024-01-25 13:20:01       41 阅读
  7. 【笔记】Helm-4 最佳实践-3 模板

    2024-01-25 13:20:01       59 阅读
  8. 使用 git rebase 合并多个 commit

    2024-01-25 13:20:01       48 阅读
  9. openssl3.2/test/certs - 043 - 4096-bit leaf key

    2024-01-25 13:20:01       60 阅读