第四章-数据操作<Foundations of computer science>(Part One)

2023-12-10 13:05

本文主要是介绍第四章-数据操作<Foundations of computer science>(Part One),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在第三章中,我们展示了如何在计算机中存储不同类型的数据。在本章中,我们将展示如何对存储在计算机中的数据进行操作。对数据的操作可以分为三大类:逻辑操作、移位操作和算术操作。

目标
在学习了本章之后,学生应该能够:
列出对数据进行的三类操作
对位模式进行一元和二进制逻辑操作。
区分逻辑移位和算术移位

对位模式执行逻辑移位操作。
对以二进制补码格式存储的整数执行算术移位操作。
当整数以二进制补码格式存储时,对整数执行加减操作。

当整数以符号和大小格式存储时,对其执行加法和减法。
当实数存储为浮点格式时,对实数进行加减操作。
了解逻辑和移位操作的一些应用,如设置、解除设置、翻转特定位。


4.1逻辑运算

在第三章中,我们讨论了这样一个事实:计算机中的数据是以位模式存储的。逻辑运算是指将相同的基本运算应用于模式的各个位的运算。或者以两种模式在两个相应的位上。这意味着我们可以在位级和模式级定义逻辑操作。模式级的逻辑操作是n个相同类型的逻辑操作,在位级,其中n是模式中的位数。

4.1.1位级逻辑操作

位可以取两个值中的一个:0或1。如果我们将0解释为值false和
1作为true,我们可以应用布尔代数中定义的操作来操作位。布尔代数是为了纪念乔治·布尔而命名的,它属于一个叫做逻辑的特殊数学领域.附录e简要讨论了布尔代数及其在构建计算机逻辑电路中的应用。在本节中,我们将简要介绍用于处理位的四种位级运算:NOT, AND, OR和XOR。

布尔代数和逻辑电路在附录E中讨论。

图4.1显示了这四个位级操作符及其真值表的符号。真值表定义了每个或多个可能输入的输出值。
注意,每个运算符的输出总是1位,但输入可以是1位或2位。

NOT

NOT操作符是一元操作符:它只接受一个输入。输出位是输入位的补码。如果输入为0,输出为1,如果输入为1,输出为
0. 换句话说,NOT运算符翻转它的输入。NOT运算符的真值表只有两行,因为单个输入可以是0或1:两种可能性。

AND

AND运算符是一个二进制运算符:它接受两个输入。如果两个输入都是1,则输出位为1,而在其他三种情况下输出位为0。AND运算符的真值表有四行,因为有两个输入,就有四种可能的输入组合。

一个属性
AND运算符的一个有趣之处在于,如果一个输入中的位为0,我们不必检查另一个输入中的相应位:我们可以很快得出结果为0的结论。当讨论这个运算符在位模式上的应用时,使用这个性质:

For x = 0 or 1 x AND 0 → 0 and 0 AND x → 0 

OR
OR运算符也是一个二进制运算符:它接受两个输入。如果两个输入都为0,则输出位为0,其他三种情况下输出位为1。OR运算符的真值表也有四行。OR运算符有时被称为包含或运算符,因为不仅当其中一个输入为1时输出为1,而且当两个输入都为1时输出也为1。这与我们接下来要介绍的算子是相反的。

一个属性
关于OR运算符的一个有趣之处在于,如果一个输入中的位为1,我们不必检查另一个输入中的相应位:我们可以很快得出结果为1的结论。当讨论这个运算符在位模式上的应用时,使用这个性质:

For x = 0 or 1 x OR 1 → 1 and 1 OR x → 1

XOR
异或运算符(发音为' exclusive-or ')也是像OR运算符一样的二进制运算符,只有一个区别:如果两个输入都是1,则输出为0。我们可以用另一种方式来看待这个运算符:当两个输入相同时,输出为0,当两个输入不同时,输出为1。

例4.1
在英语中,我们有时使用连词or表示包含或,有时表示排除或。

a.在I wish to have a car or a house这句话中,“或”是包含意义上的——我想要一辆车,一所房子,或者两者兼而有之。
b.句子“今天不是星期一就是星期二”用的是排他意义上的“或”——今天不是星期一就是星期二,但不能两者都是。

例4.2
异或运算符实际上并不是一个新运算符。我们总是可以用其他三个运算符来模拟它。下面两个表达式是等价的:

x XOR y ↔ [x AND (NOT y)] OR [(NOT x) AND y]

如果我们对两者都建立真值表,就可以证明其等价性。
一个属性
异或的一个性质是,如果一个输入中的位为1,则结果是另一个输入中相应位的补码。当讨论这个运算符在位模式上的应用时,我们使用这个性质:

For x = 0 or 1 1 XOR x → NOT x and x XOR 1 → NOT x

4.1.2模式级逻辑操作

相同的四个操作符(NOT、AND、OR和XOR)可以应用于n位模式。
其效果与将每个操作符应用于NOT的每个单独位以及将其他三个操作符应用于每个相应的位对相同。图4.2显示了这四个具有输入和输出模式的操作符。

例4.3
对位模式10011000使用NOT运算符。
解决方案
解决方案如下所示。注意,NOT操作符将每一个0变为1,每一个1变为0:

应用程序

可以使用四个逻辑运算来修改位模式。
补充

NOT操作符的唯一应用是补充整个模式。将此运算符应用于模式时,每0更改为1,每1更改为0。这有时被称为1的补码运算。例4.3展示了互补的效果。

清除特定位

AND运算符的一个应用是取消(强制为0)位模式中的特定位。在这种情况下,第二个输入称为掩码。掩码中的0位消除了第一次输入对应的位:掩码中的1位保持第一次输入对应的位不变。这是由于我们提到的AND运算符的属性:如果其中一个输入是0,那么无论另一个输入是什么,输出都是0。取消模式中的位可以有许多应用。例如,如果一个图像每像素只使用一个比特(黑白图像),那么我们可以使用掩码和and操作符将特定像素设置为黑色。

设置特定位

OR运算符的一个应用是在位模式中设置(强制为1)特定的位。
同样,我们可以使用遮罩,但是不同的遮罩。掩码中的1位设置了第一次输入的对应位,掩码中的0位保持了第一次输入的对应位不变。这是由于我们提到的OR运算符的性质:如果其中一个输入是1,那么不管另一个输入是什么,输出都是1。

在模式中设置位有许多应用。例如,如果图像每个像素(黑白图像)只使用一个比特,那么我们可以使用掩码和OR操作符将特定像素变为白色。

翻转特定位

异或运算符的一个应用是在位模式中翻转(补全)特定的位。同样,我们可以使用遮罩,但是不同的遮罩。掩码中的1位翻转第一个输入对应的位和掩码中的0位保持第一个输入对应的位不变。这是由于我们提到的异或运算符的性质:如果其中一个输入是1,输出是相应位的补码。
请注意NOT操作符和异或操作符之间的区别。NOT运算符对输入中的所有位进行补全,而异或运算符只对第一个输入中由掩码定义的特定位进行补全。

例4.9
使用掩模翻转图案最左边的五个位。用图案测试遮罩
10100110.

这篇关于第四章-数据操作<Foundations of computer science>(Part One)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/477181

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者