02-数据的表示和运算

本文详细介绍了计算机系统的基础知识,包括数制转换、数据表示(如定点数、浮点数)、编码(如ASCII码、汉字编码)、校验码(如奇偶校验码、海明码、CRC校验码)以及算术逻辑单元(ALU)的工作原理。讨论了定点数和浮点数的运算,如加减法、乘除法,并深入探讨了溢出的概念和判别方法。此外,还涵盖了数据的存储和排列,如大小端模式、边界对齐等。内容全面,适合计算机科学初学者了解和复习基本概念。
摘要由CSDN通过智能技术生成

知识点

(一)数制、编码、校验码

  • 进位计数制及其相互转换、真值和机器数
  • BCD码【22计算机统考408已删除该考点】,ASCll码、汉字编码
  • 奇偶校验码【22计算机统考408已删除该考点】、海明码、CRC校验码

(二)定点数的表示和运算

  • 无符号数的表示、有符号数的表示
  • 定点数的移位运算、原码定点数的加减运算、补码定点数的加减运算定点数的乘除运算、溢出概念和判别方法
  • c语言整数类型及类型转换
  • 大端编址、小端编址、边界对齐

(三)浮点数的表示和运算

  • 浮点数的表示、IEEE754标准
  • 浮点数的加减运算

(四)算术逻辑单元(ALU)

  • 一位加法器、串行加法器、并行加法器
  • ALU的功能结构

难点

  1. 定点数的表示方式
  2. 定点数的运算过程
  3. 浮点数的表示及运算过程

综合考纲要求

  1. 数制与编码
  2. 定点数的表示和运算
  3. 浮点数的表示和运算
  4. 算术逻辑单元ALU
    在这里插入图片描述

数制、编码、校验码

数据的表示

十进制转换成其它进制

小数部分乘基取整,整数部分除基取余

在这里插入图片描述

常见二进制数据

在这里插入图片描述

真值和机器数

在这里插入图片描述

BCD码

8421码

8421码是一种有权码,0~9的8421码与其二进制码完全相同,所以说求一个数的8421码就将这个数按位转化为二进制(四位,不足前面补0)。举个栗子,十进制的25,二进制为11001,8421码为0010 0101。

举个例子:
  321的8421码就是
  3 2 1
  0011 0010 0001
  原因:0011=8x0+4x0+1x2+1x1=3 0010=8x0+4x0+2x1+1x0=2 0001=8x0+4x0+2x0+1x1=1
  具体:
  BCD码是十位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 … 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不像普通的二进制码,到1111才产生进位10000
  举例:
  某二进制无符号数11101010,转换为三位非压缩BCD数,按百位、十位和个位的顺序表示,应为
  A. 00000001 00000011 00000111 B. 00000011 00000001 00000111
  C. 00000010 00000011 00000100 D. 00000011 00000001 00001001
  解:(1)11101010转换为十进制:234
  (2)按百位、十位和个位的顺序表示,应为
  附注:压缩BCD码与非压缩BCD码的区别—— 压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110B表示十进制数96D;非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的00001001表示09.例如00001000B表示十进制数8.

余3码

余3码是一种无权码,也比较好计算,就是在数字二进制的基础上加上0011,也就是在数字8421码的基础上再加上0011

2421码

2421码也是一种有权码,4位二进制码的权依次为2,4,2,1.从十进制的数字转换到2421码也是凑的思路。但是出现了两个2,并且还有4(=2+2)就注定了这个规律要比5421码稍微复杂一点。简单来说就是,先用4来凑(除了5,它的2421码为1011),>5的数先用第一个2,<5的数先用第二个2。

//几种不允许出现的状态
不允许出现的  			0101		0110		0111      1000	   1001   1010
假设可以得到的数字         5           6           7         2		 3       4
真正的2421码             1011        1100        1101      0010		0011	0100
压缩与非压缩

区别就是BCD码是8位的,浪费4位用0填充,压缩的BCD码是4位的,没有浪费

由于1字节有8bit(8个0或1)如果用一字节存储4位BCD码(其余补0)就是非压缩

如十进制的123:

非压缩码 00000001 00000010 00000011

压缩码 0001 0010 0011

字符的表示(ASCLL)

可印刷字符32~126

控制和通信字符:其他的

数字范围48-57
大写字母:65-90

小写字母:97-122

校验码

校验原理

码字:由若干位二进制代码组成的编码

码字间的距离:两个码字逐位对比,不同位的个数

码距(d):任意两个合法码字之间最少变化的二进制位数,或者说是各个合法码字之间的最小距离

  • d=1,无能
  • d=2,开始具有检错能力
  • d>2,开始具有纠错能力

奇偶校验码

在这里插入图片描述

奇校验码:数据位和校验位一共所含的“1”的个数为奇数

偶校验码:数据位和校验位一共所含的“1"的个数为偶数

在这里插入图片描述

只能发现奇数个出错的码数,只具有纠错能力不具有矫错能力

在这里插入图片描述

二维奇偶校验

在这里插入图片描述

需要添加横向校验码和纵向校验码、对角线校验码。

海明校验码

将信息位分组进行偶校验
在这里插入图片描述

信息位:1010

1.确定海明码的位数:
2^k ≥n + k + 1

n=4—>k = 3

设信息位D4D3D2D1(1010),共4位,校验位P3P2P1,共3位,对应的海明码为H7H6H5H4H3H2H1。

2.确定校验位的分布:

校验位P放在海明位号为2^(i-1)的位置上,信息位按顺序放到其余位置。

在这里插入图片描述

3.求校验位P3P2P1的值:

分别对K组进行偶校验

在这里插入图片描述

4.检错纠错

在这里插入图片描述

海明码具有一位纠错能力,两位检错能力。

在这里插入图片描述

循环冗余校验码 (CRC码)

在这里插入图片描述

n=m+k

CRC:接收方和发送方约定好校验位,然后用接收到的CRC整体校验码,对校验位进行模2除法运算,最后观察余数。

设生成多项式为G(x)=x3+x2+1,信息码为101001,求对应的CRC码。

1.确定R的位数

R=生成多项式最高次幂=3

生成多项式G(x)= 1·x^3+ 1·x2+0·x1+1·x^0,对应二进制码1101,也就是除数

2.移位

信息码左移R位,低位补0,得到被除数101001000

3.相除

对移位后的信息码,用生成多项式进行模2除法,产生余数

在这里插入图片描述

4.检错和纠错

在这里插入图片描述

定点数的表示和运算(重点)

定点数:小数点的位置固定 Eg: 996.007 ——常规计数
浮点数:小数点的位置不固定 Eg: 9.96007*10^2 ——科学计数法

在这里插入图片描述

定点数的表示

无符号数的表示

通常只有无符号整数,而没有无符号小数

无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。

表示范围:
8位二进制数:2^8种不同的状态
0000 0000~1111 1111

n位的无符号数表示范围为:0 ~ 2^n -1

有符号数的表示

在这里插入图片描述

原码

在这里插入图片描述
在这里插入图片描述

反码

反码:若符号位为0,则反码与原码相同,若符号位为1,则数值位全部取反

在这里插入图片描述

“反码”只是“原码”转变为“补码”的一个中间状态

补码

补码:

正数的补码=原码

负数的补码=反码末位+1(要考虑进位)
在这里插入图片描述

将负数补码转回原码的方法相同:尾数取反,末位+1

移码

移码:补码的基础上将符号位取反。注意:移码只能用于表示整数

在这里插入图片描述

在这里插入图片描述

原码和反码的真值0有两种表示
补码和移码的真值0只有一种表示补码和移码可以多表示一个负数
在这里插入图片描述

原码反码补码的作用

模运算的性质

在这里插入图片描述

加减运算

在这里插入图片描述
在这里插入图片描述

补码的作用:

使用补码可将减法操作转变为等价的加法,ALU中无需集成减法器。执行加法操作时,符号位一起参与运算

移位运算

在这里插入图片描述

算术移位

移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法

原码的算术移位

原码的算数移位――符号位保持不变,仅对数值位进行移位。

右移:高位补o,低位舍弃。若舍弃的位=0,则相当于÷2;若舍弃的位A≠0,则会丢失精度
在这里插入图片描述

左移:低位补0,高位舍弃。若舍弃的位=0,则相当于×2;若舍弃的位A≠0,则会出现严重误差

在这里插入图片描述

反码的算术移位

反码的算数移位―-正数的反码与原码相同,因此对正数反码的移位运算也和原码相同。

右移:高位补0,低位舍弃。

左移:低位补0,高位舍弃。

反码的算数移位――负数的反码数值位与原码相反,因此负数反码的移位运算规则如下,

右移:高位补1低位舍弃。

左移:高位舍弃。
在这里插入图片描述
在这里插入图片描述

补码的算术移位

在这里插入图片描述

补码的算数移位――正数的补码与原码相同,因此对正数补码的移位运算也和原码相同。

右移:高位补0,低位舍弃。

左移:低位补0,高位舍弃。

补码的算数移位——负数补码=反码末位+1导致反码最右边几个连续的1都因进位而变为0,直到进位碰到第一个0为止。

规律――负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码

负数补码的算数移位规则如下:

右移(同反码):高位补1,低位舍弃。

左移(同原码):低位补0,高位舍弃。

算术移位应用举例

在这里插入图片描述

逻辑移位

在这里插入图片描述

逻辑右移:高位补0,低位舍弃。

逻辑左移:低位补,高位舍弃。

可以把逻辑移位看作是对“无符号数”的算数移位

循环移位

在这里插入图片描述

加减运算和溢出判断

在这里插入图片描述

原码的加减法

原码的加法运算:

正+正→绝对值做加法,结果为正(可能会溢出)

负+负→绝对值做加法,结果为负(可能会溢出)

正+负(负+正)→绝对值大的减绝对值小的,符号同绝对值大的数

原码的减法运算,“减数”符号取反,转变为加法:

正-负→正+正

负-正→负+负

正-正→正+负

负+正→负-负

补码的加减法

在这里插入图片描述

溢出判断

只有“正数+正数”才会上溢——正+正=负

只有“负数+负数”才会下溢——负+负=正
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

符号扩展

在这里插入图片描述

补码的乘法运算

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

补码的除法运算

在这里插入图片描述

在这里插入图片描述

原码的乘法运算

在这里插入图片描述

逻辑右移,高位补0
在这里插入图片描述

在这里插入图片描述

原码一位乘法(手算模拟)

在这里插入图片描述

原码的除法运算

恢复余数法

在这里插入图片描述

在这里插入图片描述

计算机很傻,会先默认上商1,如果搞错了再改上商0。并“恢复余数”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

加减交替法

在这里插入图片描述

在这里插入图片描述

加/减n+1次或n+2次,每次加减确定一位商;左移n次(最后一次加减完不移位)

强制类型转换

无符号数与有符号数:不改变数据内容,改变解释方式。

长整数变短整数:高位截断,保留低位。

在这里插入图片描述

注:C语言中定点整数是用“补码”存储的

数据的存储和排列

大小端模式

在这里插入图片描述

边界对齐

现代计算机通常按字节编址,即每个字节对应1个地址

通常也支持按字、按半字、按字节寻址。

假设存储字长为32位,则1个字=32bit,半字=16bit。每次访存只能读/写1个字

在这里插入图片描述

浮点数的表示和运算

在这里插入图片描述

浮点数的表示

定点数可表示的数字范围有限,但我们不能无限制地增加数据的长度

在这里插入图片描述

阶码:常用补码或移码表示的定点整数

尾数:常用原码或补码表示的定点小数

在这里插入图片描述

阶码E反映浮点数的表示范围及小数点的实际位置;

尾数M的数值部分的位数n反映浮点数的精度。

尾数给出一个小数,阶码指明了小数点要向前/向后移动几位。
在这里插入图片描述

尾数的最高位是无效值,会丧失精度

在这里插入图片描述

浮点数尾数的规格化

规格化浮点数:规定尾数的最高数值位必须是一个有效值

左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数算数左移一位,阶码减1。

右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10)时,将尾数算数右移一位,阶码加1。

在这里插入图片描述

注:采用“双符号位”,当溢出发生时,可以挽救。更高的符号位是正确的符号位

规格化浮点数的特点

在这里插入图片描述

IEEE754

在这里插入图片描述

阶码全1、全0用作特殊用途
在这里插入图片描述

float 1000 0001 1000 1010 0101 0000 1000 0000

double 1000 0001 1100 0010 0101 0000 1000 0000 0000 0000 0001 1111 0000 0000 0000 0000

阶码真值=移码-偏移量

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

浮点数的加减运算强制类型转换

在这里插入图片描述

浮点数加减运算

在这里插入图片描述

在这里插入图片描述

加减运算-舍入

“0”舍“1”入法:类似于十进制数运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。

恒置“1”法:尾数右移时,不论丢掉的最高数值位是“1”还是“0”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。

在这里插入图片描述

有的计算机可能会把浮点数的尾数部分单独拆出去计算(24bit→32bit),算完了经过舍入(32bit→24bit)再拼回浮点数

浮点数强制类型转换

在这里插入图片描述

算术逻辑单元(ALU)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值