计算机科学导论笔记(二)

news2024/10/6 14:35:46

三、数据存储

3.1 数据类型

计算机行业中使用术语“多媒体”来定义包含数字、文本、音频、图像和视频的信息。 

位:bit,binary digit的缩写,是存储在计算机中的最小单位,它是0或1.

位模式:为了表示数据的不同类型,应该使用位模式,它是一个序列,有时也称为位流。通常8位的位模式称为1字节。有时用这个术语指代更长的位模式。属于不同数据类型的数据可以以同样的位模式存储在内存中。

3.2 存储数字

数字在被存储到计算机之前,都要先转换成二进制。对于小数点,计算机有两种表示法:定点浮点。定点用来存储整数,浮点用来存储实数。

3.2.1 存储整数

整数可以被当作小数点位置固定的数字:小数点固定在最右边。因此,定点表示法用来存储整数,在这种方法中,小数点是假定的,并不存储。

3.2.1.1 无符号表示法

只包括0和非负整数。如果计算机分配用于存储无符号整数的位数为 n ,那么所能存储的最大无符号整数为 2^{n}-1

在存储无符号整数时,先将整数变为二进制数,如果二进制数不足 n 位,则在前面补0,如果大于 n 位,该整数无法存储,发生溢出。

因为存储单元数量的限制,所能存储的最大无符号整数是有限制的,这个值为  2^{n}-1。当大于这个值的数存储时,就会发生溢出。

应用:记数、寻址、存储其他数据类型。 

3.2.1.2 符号加绝对值表示法

尽管符号加绝对值表示法在储存整数时不常见,但该格式用于在计算机中存储部分实数以及采样模拟信号等。

在这种方法中,用于无符号整数的有效范围被分成两个相等的部分,前半个表示正数,后半部分表示负数。在这种方法中,二进制最左边的位表示数字的正负,0表示正,1表示负,有两个0\left ( +0,-0 \right )。 

该方法有正负两种溢出情况,存储过大过小的数字都会产生溢出。

 3.2.1.3 二进制补码表示法

几乎所有的计算机都使用二进制补码来存储整数。在这种方法中,二进制最左位的0表示正数,1表示负数。

反码:将一个整数的二进制码按位取反(0变为1,1变为0)得到的结果就是该二进制码的反码。

补码:有两种方法。第一种:从右边复制位,直到有1被复制,再取反其余位。第二种:将原码取反,再加1.

补码有两种理解方法:

第一种:将负数看成正数的负值。在存储整数时,不论正负,先将其转换成其绝对值的二进制码,如果是正数,以原样存储,如果是负数,则取原码的补码进行存储(按照上面的方法取补码)。在将二进制还原整数时,首先看符号位确定其符号,如果为0,则将二进制转换为10进制再加正号,如果为1,先取补码再转换为10进制,再加负号。

第二种:将正数和其负值看作两个数。在存储时,先按照符号加绝对值法写出其二进制码,如果为正数,按原样存储,如果为负数,则符号位不变,其余位取反加1,然后存储。从二进制还原时,如果为正数,则直接转换,如果为负数,符号位不变,其余位按位取反加1,并转换成十进制。

二进制补码也有正负两种溢出。

三种方法的比较: 

3.2.2 存储实数

实数是带有整数部分和小数部分的数字。如果使用定点法,对于 n 位的存储单元来说,不论怎样给整数和小数部分各自分配空间,都会出现无法存储很大的数(分配给小数部分的空间过多)或是无法存储很小的数(分配给整数部分空间过多)的情况。参考科学计数法,在计算机中使用浮点来存储实数。

浮点表示法:使用浮点表示法可以维持实数存储的正确度和精度。该方法允许小数点浮动:可以在小数点左右有不同的数码。使用这种方法可以存储很大或很小的实数。

一个数字的浮点表示法由三部分组成:符号、位移量和定点数。 

浮点表示法在科学研究中用来表示很大或很小的数,小数点左边只有一个位,并且位移量是10的幂。

规范化:为了使表示法的固定部分统一,科学计数法(十进制)和浮点表示法(二进制)都在小数点左边使用了唯一的非零数码,这称为规范化。显然,在二进制中,小数点左边的一位非零数码只能是1,这也就说明,我们只需要存储规范化后的小数部分,因为所有规范化后的二进制实数的整数部分都为1.

符号、指数和尾数:在二进制数规范化后,我们只需要存储一个数的符号、指数和尾数(小数点右边的位)。符号:用一位来存储(0或1)。指数:小数点移动的位数,可正可负,用余码表示法。尾数:小数点右边的位,作为无符号整数来存储,尾数是小数,只是以无符号整数的形式来存储。

余码系统:指数是有符号的数,尽管可以使用二进制补码来存储,但被一种称为余码系统的新的表示法所取代。在余码系统中,正数和负数都可以作为无符号整数存储。为了表示正的或负的整数,一个正整数(称为偏移量)加到每个数字上,将它们统一移到非负的一边。这个偏移量的值是 2^{m-1}-1m 是用来存储指数的内存单元的大小。

IEEE标准:电气和电子工程师协会已定义了几种存储浮点数的标准。我们讨论最常用的两种——单精度和双精度

IEEE标准存储浮点数:

1. 在S中存储符号(0或1)

2. 将十进制转换成二进制

3. 规范化

4. 确定E(指数)和 M(尾数)的值

5. 连接S、E、M。

将存储位IEEE标准的实数还原:

1. 找到S、E、M的值

2. 由S确定符号

3. 找到位移量(E-127)

4. 去规范化

5. 将二进制转换成十进制

6. 加上符号

上溢和下溢:当存储的数字(绝对值)过小时会发生下溢(指数溢出),当存储数字(绝对值)过大时会发生上溢(指数溢出)。

存储零:将所有位都置零。

截断错误:当规范化后小数点右边的位数过多时,会截断掉右边超出存储范围的部分,这种原始数字与还原后数字的差异称为截断错误。当这种错误出现在宇航等领域的计算中时,后果是很严重的,这时需要使用更大的尾数表示法。

3.3 存储文本

在任何语言中,文本的片段是用来表示该语言中某个意思的一系列符号,也就是说,文本是符号的集合,要存储文本就要存储这些符号。文本中的符号可以是标点、英文字母、汉字等。

使用不同的位模式来表示不同的符号,这样文本就可以作为符号的集合存储在计算机中。表示符号的过程被称为编码

ASCII:美国国家标准协会开发了一个被称为美国信息交换标准码的编码。该编码使用7位表示每个符号,可以定义128种不同的符号。如今ASCII是Unicode的一部分。

Unicode:这种编码使用32位,最大能表示4294967296个符号。编码的不同部分被分配用于表示来自世界上不同语言的符号,还有些部分被用于图形和特殊符号。

3.4 存储音频

文本中的符号是可以记数的,但音频是随声音变化的实体,我们只能记录声音在某一时刻的密度。音频是模拟数据的例子。

采样:如果不能记录一段时间中音频的所有值,至少可以记录其中的一部分。采样意味着我们在模拟信号上选择数量有限的点来度量它们的值并记录下来。采样率指单位时间内采取样本的数量。

量化:将样本的值截取为最接近的整数(方便存储)。如,实际值为17.2,截取为17;实际值为17.8,可截取为18.

每样本位:记录每个样本分配的位数,有时称为位深度

位率:如果位深度或每样本位为B,采样率为S,则位率为 B*S,即每秒样本需要的空间大小。

编码:当今音频编码的主流标准是MP3(MPEG Layer 3的简写)。它采用每秒44100个样本,每样本16位。

3.5 存储图像

3.5.1 光栅图(位图)

一张照片由模拟数据组成,类似音频,不同的是,数据密度随空间变化。这意味着数据需要采样。这种采样通常被称为扫描,样本称为像素。也就是说,图片被分为很小的像素,每个像素都有单独的密度值。

解析度:每英寸的方块或线条记录的像素数量。在图像处理中的扫描率被称为解析度。如果解析度够高,人眼就看不出重现图像中的不连续。

色彩深度:用于表现像素的位的数量。依赖于像素的颜色是由何种不同的编码技术来处理的。真彩色:使用24位来编码一个像素,每个三原色(RGB)占8位(0-255)。索引色:许多应用程序并不会用到如此大量的颜色,选择其中的一部分并进行编码,每个像素8位。

编码:JPEG(联合图像专家组)使用真彩色模式,但压缩图像来减少位的数量。GIF(图形交换格式)使用索引色模式。

3.5.2 矢量图

光栅图有两个缺点:文件体积太大、重新调整图像大小有麻烦。放大光栅图意味着扩大像素,所以放大后的图像看起来很粗糙。矢量图图像编码方法并不存储每个像素的位模式,而是将图像分为几何图形的组合,如线段、圆等,每个几何图形由数学公式表达。矢量图是由定义如何绘制这些几何图形的一系列命令构成的。

当要显示或打印图像时,将图像的尺寸作为输入传入给系统,系统重新设计图像的大小并用相同的公式画出图像。

矢量图不适合存储照片图像的细微精妙。JPEG或GIF光栅图提供了更好和更生动的图片。矢量图可以用于创建字体、工程绘图等。

3.6 存储视频

视频是图像()在时间上的表示。一部电影就是一系列的帧一张接一张播放而形成运动的图像。换言之,视频是随空间(单个图像)和时间(一系列图像)变化的信息表现。所以,直到如何将一张图像存储在计算机中,也就知道如何存储视频:每一幅图像或帧转换成一系列位模式并存储。

四、数据运算

4.1 逻辑运算

4.1.1 位层次上的逻辑运算

非(NOT):只有一个输入,输出与输入相反。

与(AND):二元运算符,两个输入。输入都为1,则输出1,输入有0,则输出0.

或(OR):二元运算符,两个输入。输入都为0,则输出0,输入有1,则输出1.

异或(XOR):二元运算符,两个输入。输入相同,输出为0;输入相异,输出为1.

 4.1.2 模式层次的逻辑运算

相同的四个运算符可以被应用到 n 位模式。模式层次的逻辑运算就是对模式的每一位进行对应的逻辑运算(位数相同的两个模式)。

应用:4种逻辑运算能够修改位模式。

求反:对位模式的每一位进行取反操作。

指定位复位:利用 “与” 运算,可以用一个位模式将另一个位模式的指定位复位为0.这个用来修改其他位模式的位模式就称为掩码(掩盖本来的位模式)。

指定位置位:利用 “或” 运算,可以将一个位模式的指定位置为1.

指定位反转:利用 “异或” 运算,可以将一个位模式的指定位反转。

4.2 移位运算

逻辑移位:应用于不带符号位的数的模式。逻辑右移将位模式中的每一位向右移动一位,最右边的位丢失,最左位补零;逻辑左移将位模式中的每一个位向左移动一位,最左位丢失,最右位补零。

循环移位:同逻辑移位相似,但没有位的丢失,右移时,最右位移到最左位;左移时,最左位移到最右位。

算数移位: 算术移位应用于二进制补码表示的带符号位的整数。算数左移(乘2)时,每移动一位,最左位丢弃,最右位补零,如果符号位没变,则运算成功,否则发生溢出;算数右移(除以2)时,最右位丢弃,最左位补原来的符号位。

4.3 算术运算

算数运算包括加减乘除,适用于整数和浮点数。这里只讨论加、减。

整数的加减法:在大多数计算机中,整数都是以二进制补码的形式存储的,也就是说,在进行加减运算时,也是以补码的形式进行的。减法可以看作是和负数的加法。

 实数的加减法:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于Paul C.R. - Inductance_ Loop and partial-Wiley (2009)一书的概括

环感抗和部分感抗是两种不同的电路元件,它们通常用于描述不同类型的导体结构中的电流承载能力。 环感抗通常用于描述绕制在磁性芯上的线圈。当电流通过线圈时,它会在磁性芯中产生一个磁场,这个磁场又会对线圈产生一个磁通量。这个磁通量的大…

八股文面试day1

二分查找(解决整数溢出) 方法一:mid(leftright)/2 -> left/2right/2 -> left(-left/2right/2) -> l(r-l)/2 方法二:mid(lr)>>>1 字节溢出整体右移一位就是正确的值 MySQL存储引擎MyISAM和InnoDB的区别 数据…

Raspberry Pi GPIO入门指南

如果您想使用 Raspberry Pi 进行数字输入/输出操作,那么您需要使用 GPIO(通用输入/输出)引脚。在这篇文章中,我们将为您提供 Raspberry Pi GPIO 的基础知识,包括如何访问和操作 GPIO 引脚。 0.认识GPIO 树莓派上的那…

MMSeg绘制模型指定层的Heatmap热力图

文章首发及后续更新:https://mwhls.top/4475.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 摘要:绘制模型指定层的热力图 可视化环境安装 …

matlab - 程序流程控制、函数文件、特殊函数、调试与优化

学习视频MATLAB代码的两种执行方式:命令行、程序执行。1.程序流程控制1.1.m文件matlab中m文件分为两种:脚本文件&函数文件。脚本文件:实际上是一个命令的集合,可认为是命令行的改良版,方便我们去编写命令函数文件&…

守护进程 || 精灵进程

目录 守护进程(deamon) || 精灵进程 特点 什么是前台进程组 把自己写的服务器deamon deamon代码 守护进程(deamon) || 精灵进程 特点 01. 他的PPID是1(附件特征)02. COMMAND --- 称为进程启动的命令03…

[ vulnhub靶机通关篇 ] Empire Breakout 通关详解

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

应用层协议 HTTP HTTPS

目录 应用层 再谈 "协议" 序列化和反序列化 关于 json库 request序列化 request反序列化 response序列化 response反序列化 PS:命令宏 HTTP协议 认识URL urlencode和urldecode HTTP协议格式 HTTP请求 HTTP响应 请求方法 ​编辑 HT…

使用Element-UI展示数据(动态查询)

学习内容来源:视频P4 本篇文章进度接着之前的文章进行续写 精简前后端分离项目搭建 Vue基础容器使用 目录选择组件修改表格组件修改分页组件增加后端接口前端请求数据接口页面初始化请求数据点击页码请求数据选择组件 在官方文档中选择现成的组件,放在页…

XSS漏洞分类

XSS漏洞分类XSS分类反射型XSS反射XSS案例存储型XSS存储型XSS实操XSS分类 XSS根据类型和利用手法的不同,主要分为三大类: 反射型XSS存储型XSSDOM型XSS 反射型XSS 反射型XSS又称为非持久型XSS,是现在最容易出现的一种XSS漏洞。用户在请求某…

零死角玩转stm32初级篇4-初识 STM32 库

本篇博文目录:一.STM32库开发的相关概念知识1.什么是 STM32 库?2.CMSIS 标准二.STM32 结构及库层次关系1.库目录,文件简介2.CMSIS3.STM32F10x_StdPeriph_Driver4.STM32F10x_StdPeriph_Template5.库各文件间的关系三.使用库帮助文档1.常用官方资料2.官网手…

Math类详解与Random类、三种随机数生成方式(java)

文章目录📖前言:🎀认识Random类🎀三种随机数生成方式🎀Math类的用途🎀Math类的方法📖前言: 本篇博客主要以介绍Math类的常用方法及认识Random类,及三种随机数生成方式 …

Docker学习(二十)什么是分层存储?

目录1.简介2.什么是 Union Mount?3.分层介绍1)lowerdir 层(镜像层)2)upperdir 层(容器层)3)merged 层4.工作原理1)读:2)写:3&#xff…

Java位集合之BitMap,BitSet解析

文章目录1 Java位集合1.1 Bit-Map1.1.1 简介1.1.2 添加1.1.3 清除1.1.4 查找1.2 Bitmap应用1.2.1 快速排序1.2.2 快速去重1.2.3 快速查找1.3 BitSet1.4 Bloom Filters1.4.1 简介1.4.2 BloomFilter 流程1 Java位集合 前几天刚学习了Redis中位操作命令,今天顺便学下j…

【unity】rts engine 6 放置并建造建筑;

一 放置并建造建筑 GameManager -> Essential -> BuildingExtension 查看 building placement building position y offset Y轴偏移,建筑离地距离,可0.1 terrain max distance 放置建筑与允许地形的最大距离,可1 placable terrain …

linux基本指令和权限

目录 一.shell命令以及运行原理 二.Linux常用指令 1. ls 指令 2. pwd命令 3.cd指令 4. touch指令 5.mkdir指令(重要) 6.rmdir指令 && rm 指令(重要) 7.man指令(重要) 8.cp指令(重要&…

AI_Papers周刊:第四期

2023.02.28—2023.03.05 Top Papers Subjects: cs.CL 1.Language Is Not All You Need: Aligning Perception with Language Models 标题:KOSMOS-1:语言不是你所需要的全部:将感知与语言模型相结合 作者:Shaohan Huang, Li …

[C++]vector模拟实现

目录 前言: 1. vector结构 2. 默认成员函数 2.1 构造函数 无参构造: 有参构造: 有参构造重载: 2.2 赋值运算符重载、拷贝构造(难点) 2.3 析构函数: 3. 扩容 3.1 reserve 3.2 resize…

Matlab小波去噪——基于wden函数的去噪分析

文章目录一、问题描述二、代码问题1:原始信号加6分贝高斯白噪声问题2:确定合适的小波基函数问题3:确定最合适的阈值计算估计方法问题4:确定合适的分解层数问题5:实际信号去噪问题6:对比三、演示视频最后一、…

团队死气沉沉?10种玩法激活你的项目团队拥有超强凝聚力

作为项目经理和PMO,以及管理者最头疼的是团队的氛围和凝聚力,经常会发现团队死气沉沉,默不作声,你想尽办法也不能激活团队,也很难凝聚团队。这样的项目团队你很难带领大家去打胜仗,攻克堡垒。但是如何才能避…