计算机系统基础知识:数据表示及运算

1. 计算机系统基本组成

计算机系统由硬件和软件组成,通过运行程序来协同工作。计算机硬件是物理装置,计算机软件是程序、数据和相关文档的集合。
在这里插入图片描述

  • 计算机硬件
    由**运算器、控制器、存储器、输入设备(把数据输入计算机)和输出设备(把计算机中数据展示出来)**组成。
    运算器和控制器及其相关部件集成在一起,统称为中央处理器(Central Processing Unit,CPU).CPU是硬件核心,用于数据的加工处理、能完成各种运算和控制功能。
    • 运算器:对数据进行加工处理的部件,主要完成算术和逻辑运算。
    • 控制器:从主存中取出指令并进行分析,控制计算机各个部件有条不紊的完成指令的功能。
    • 存储器:分为内存和外存。
    • 主机:CPU 和存储器的有机组合。
  • 计算机软件
    计算机软件为管理、运行、维护及应用计算机系统所开发的程序和相关文档的集合。
    • 系统软件:管理系统的硬件和软件资源;
    • 中间件:独立的系统软件或服务程序,常用于管理计算资源和网络通信,提供通信处理、数据存取、事务处理、Web服务、安全、跨平台等服务;
    • 应用软件:用于解决领域的具体问题。
  • 计算机分类:个人移动设备、桌面设备、服务器、集群/仓库级计算机、超级计算机和嵌入式计算机。

2. 数据表示及运算

2.1 数据表示

进位计数值及其转换

  1. 二进制、八进制、十进制和十六进制的表示:
计数制基数符号形式表示符示例
十进制100-9D123, 456, 789
二进制20, 1B1010, 1101, 0011
八进制80-7O123, 567, 450
十六进制160-9, A-FH1A3, 4F5, 6ED
  1. 十进制与二进制之间转换
    十进制整数转换为二进制整数方法是“除2取余”,十进制小数转换为二进制小数方法是“乘2取整”。
    二进制转十进制的方法是:将二进制的每一位数乘以它的权,然后相加。
    NOTE:八进制和十六进制转与十进制之间转化类似。
  2. 二进制、八进制和十六进制之间对应关系
二进制数八进制数十六进制数
000000
000111
001022
001133
010044
010155
011066
011177
1000108
1001119
101012A
101113B
110014C
110115D
111016E
111117F

机器数和码制

机器数:数据在计算机中的表示,采用二进制计数制,数的符号用0、1表示,小数点隐含表示而不占位置。机器数的最高位表示正、负符号位,其余位则表示数值。

  1. 原码
    原码是最简单的表示方式,包括符号位和数值位。符号位位于最高位,用0表示正数,用1表示负数,其余位表示数值的大小。
    正数:其原码就是其二进制本身。
    负数:其原码是符号位为1,数值部分取该数绝对值的二进制。

  2. 反码
    反码也是包括符号位和数值位的一种表示方式。对于正数,其反码与原码相同;对于负数,其反码是符号位为1,其余位是原码取反。
    正数:反码与原码相同。
    负数:反码是符号位不变,其余位取反。

  3. 补码
    补码是在反码的基础上形成的,也是目前计算机中最常用的数值表示方式。对于正数,其补码与原码和反码相同;对于负数,其补码是符号位为1,其余位是原码取反后加1。
    正数:补码与原码和反码相同。
    负数:补码是符号位为1,其余位是原码取反后加1。
    补码的优势在于能够表示更多的数值,特别是可以表示-128(在8位二进制中),并解决了0的符号表示问题。此外,补码还允许计算机中的加法和减法运算使用相同的硬件电路。

  4. 移码
    移码(又称增码或偏置码)通常用于表示浮点数的阶码。其表示形式与补码相似,但符号位相反,即用1表示正数,用0表示负数,数值部分与补码相同。
    正数:移码的最高位(符号位)为1,其余位与补码相同。
    负数:移码的最高位(符号位)为0,其余位是补码取反(实际上因为数值部分与补码相同,所以这部分不变,只是符号位取反)。
    移码主要用于浮点数的阶码表示,以简化浮点数的比较和排序操作。

定点数和浮点数

  1. 定点数(Fixed-Point Number)
    定点数是一种表示固定小数位数的数值类型。它通常表示为一个有符号的整数部分和一个小数部分,小数点的位置是固定的。定点数既可以用于表示整数,也可以用于表示小数。但在固定位数下,小数点的位置是预先设定的,因此其表示的数值范围和精度是有限的。
    在这里插入图片描述

  2. 浮点数
    浮点数是一种小数点位置不固定的数,能够表示更大范围的数值。
    浮点数采用类似科学计数法的表示方法,即一个数N可以表示为N = M × b^E的形式,其中M是尾数(mantissa),b是基数(通常为2),E是指数(exponent)。
    精度可变:浮点数的精度可以随着数值的大小而改变,能够表示很大或很小的数值,但在表示小数时可能存在精度损失。
    表示范围广泛:浮点数可以表示比定点数更大范围的数值。
    运算复杂:浮点数的运算比定点数复杂,因为需要处理阶码和尾数的运算。
    内存占用:浮点数通常需要更多的内存空间来存储,因为需要额外的位来表示指数和尾数。

  3. 工业标准IEEE 754
    IEEE 754标准定义了浮点数的格式,包括符号位(sign bit)、指数位(exponent bits)和尾数位(mantissa bits)。符号位位于最高位,用于表示浮点数的正负。指数位用于表示浮点数的规模,是一个有偏指数(biased exponent),通过加上一个固定偏置来进行编码。尾数位也称为分数位或有效数字位,用于表示浮点数的精度。
    在这里插入图片描述

十进制编码

余3码:在8421码的基础上,把每个数的代码加上0011后构成。
格雷码:相邻的两个代码之间只有一位不同。
在这里插入图片描述

ASCII码

在这里插入图片描述

汉字编码

汉字编码是汉字标准规范中的一个专门术语,是指通用规范汉字表中的汉字顺序码。其目的是为了解决汉字如何输入计算机的问题,因为电子计算机现有的输入键盘与英文打字机键盘完全兼容,无法直接输入非拉丁字母的文字(包括汉字)。
汉字编码根据应用目的的不同,主要分为外码、交换码、机内码和字形码等。其中,外码也叫输入码,是用来将汉字输入到计算机中的一组键盘符号,如拼音码、五笔字型码、自然码等。

  • 常见的汉字编码标准(内部码)
    1. GB2312:中国最早的汉字编码标准之一,由国家标准总局发布,1981年5月1日实施。它包含了基本的汉字、符号、数字等共7445个字符,主要用于简体中文字符的处理和表示,广泛应用于计算机系统、通信设备等领域。
    2. GBK:GB2312的扩展版本,包含了更多的汉字、符号、数字等,共收录了21886个字符,可以表示繁体中文和日文汉字等其他字符,因此在大陆地区和香港地区都有广泛的应用。
    3. GB18030:中国国家标准局于2000年发布的新一代中文编码标准,包含了GB2312和GBK编码中的所有字符,以及繁体中文、日文汉字、朝鲜语等字符,共收录了27484个字符。
    4. UTF-8:一种可变长度的Unicode编码方式,可以表示Unicode字符集中的任意字符,包括中文字符。UTF-8编码不仅可以用于中文字符的处理和表示,还可以表示其他语言的字符,因此在国际化应用中得到了广泛的应用。
    5. Big5:一种汉字编码方式,主要用于繁体中文的处理和表示,是台湾地区广泛使用的汉字编码方式之一。
  • 字形码:表示汉字字形的字模数据,通常用点阵、矢量函数等方式显示。

Unicode

Unicode是一种字符编码标准,用于将字符集中的每一个字符分配一个唯一的数字(代码点),以便在计算机系统中进行存储、处理和交换。Unicode包含了世界上几乎所有语言所需的字母、数字、标点符号和符号,被广泛应用于各种操作系统、编程语言和技术标准中。(可扩充
**背景:**随着计算机技术的快速发展,不同国家和地区之间的信息交流日益频繁,传统的字符编码方案(如ASCII、GB2312、Big5等)已经无法满足需求。为此,国际标准化组织(ISO)开始着手制定一种统一的字符编码标准,即Unicode。

  • Unicode字符的编码方式一般有三种:UTF-8、UTF-16、UTF-3234。
  1. UTF-8:一种可变长度的Unicode编码方式,每个字符可能占用1到4个字节。UTF-8编码具有节省空间、兼容ASCII编码等优点,因此在互联网和文件系统中得到了广泛应用。
  2. UTF-16:一种定长编码方案,用于在字处理器、文本编辑器和Windows操作系统中表示Unicode字符。UTF-16编码对于大部分常用字符(如英文字符和常用中文字符)非常高效,但对于一些特殊字符(如表情符号)则需要使用两个16位编码单元(即4个字节)来表示。
  3. UTF-32:一种定长编码方案,用于在程序中存储和处理Unicode字符。UTF-32编码对每个字符都使用4个字节来保存,虽然编码简单,但会造成空间的极大浪费。

2.2 校验码

校验码(Check Code或Error Detection Code)是一种附加在数据末尾的冗余信息,用于检测或纠正数据传输或存储过程中产生的错误。其主要功能是确保数据的完整性和正确性,防止由于噪声、干扰或其他原因导致的数据错误。

  • 校验码的原理通常包括以下几种方式:
  1. 奇偶校验:通过添加一个额外的位(0或1),使得数据中1的总数为奇数(奇校验)或偶数(偶校验)。奇偶校验位可以检测单个位的错误。
  2. 循环冗余校验(CRC):通过将数据视为一个大的多项式,并将其除以一个固定的“生成多项式”,得到的余数作为CRC校验码。CRC能够检测到多位错误,并具有较高的错误检测能力。
  3. 校验和:将数据分成固定大小的段,然后将这些段相加(有时还会进行其他操作),最后可能对结果取反或进行其他处理以生成校验和。校验和能够检测数据中的错误,但其错误检测能力不如CRC。
  4. 海明码:一种错误纠正码,通过在数据中添加冗余位,不仅可以检测错误,还能确定错误的位置并进行纠正。

2.3 逻辑代数及运算

  • 逻辑运算:与.、或+、非-、异或。
  • 逻辑公式
    在这里插入图片描述

2.4 机器数的运算

机器数的加减运算

Note:计算机内部通常只设置加法器,减法运算转化为加法运算进行。

  • 原码加减法
    加法:相同符号的原码相加,数值部分直接相加,运算结果与两个加数的符号相同。
    减法:先比较两个数绝对值的大小,然后用绝对值大者的绝对值减去绝对值小者的绝对值,结果的符号取绝对值大者的符号。
  • 补码加减法
    在这里插入图片描述
    补码加减法的规则如下:
  1. 参加运算的操作数用补码表示;
  2. 符号位参加运算;
  3. 若进行相加运算,则两个数的补码直接相加;若进行相减运算,则将减数连同其符号位一起变反后加1后与被减数相加。
  4. 运算结果用补码表示。

与原码减运算相比,补码减运算的过程要简便很多。在补码加减运算中,符号位和数值位一样参加运算,无需做特殊处理。因此多数计算机都采用补码加减法运算法。

  • 溢出及判定
    两个同符号的数相加,或者相异符号数相减,运算结果有可能溢出。
    溢出检测机制:进位判决法和双符号判决法。

机器数的乘除运算

纯软件方案;
硬件方案;
设置专用的硬件阵列乘法器或除法器。

浮点运算

浮点运算的步骤
浮点数的加减运算通常包括以下几个步骤:

  1. 对阶:使两个操作数的阶码相同,以便进行尾数的加减运算。
  2. 尾数加减:将两个操作数的尾数进行加减运算。
  3. 规格化:将尾数加减的结果进行规格化处理,以满足IEEE 754标准对尾数的要求。
  4. 舍入:对尾数进行舍入处理,以减小舍入误差。
  5. 溢出判断:判断运算结果是否溢出,并进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值