计算机组成与系统结构 第二章 计算机系统中的数据表示

数据编码

数值数据的编码

1、数据表示与数据编码的有关概念

计算机可以表示的数据:

  • bit
  • byte
  • word

计算机中需要表示、处理的数据:

  • 指令
  • 正数、负数,整数、小数、实数
  • 文字、字符,声音、图像、视频

数据表示

  • 定义:机器硬件能直接识别引用的数据类型。

  • 条件:相应的运算指令和运算硬件(处理部件)。

  • 目标:

    • 缩小高级语言和机器语言间的语义差别
    • 提高性能/价格
    • 节省处理时间和存储空间
  • 实现:最小的存储空间、最简单的存取算法。

数据表示与数据结构

  • 数据表示:指的是能由机器硬件直接识别和引用的数据类型。由硬件实现的数据类型
  • 数据结构:面向计算机系统软件、面向应用领域所需处理的数据类型。由软件实现的数据类型。
    • 目标:最大限度满足应用要求、最简化的方法实现。
    • 实现:通过数据表示和软件映象相结合方法实现。
  • 数据表示是数据类型的子集。
  • 数据表示的确定实质上是软、硬件的取舍问题。
  • 数据结构和数据表示是软、硬件的界面。

编码:采用少量的基本符号,选用一定的组合原则,以表示大量复杂多样的信息。

  • 数值信息
  • 非数值信息

计算机内部的数据若有确定的值,即在数轴上能找到其对应的点,则称为数值数据。

数值数据是表示数量多少和数值大小的数据。


2、原码

原码(True form): “符号-数值”表示法,
符号位+绝对值的真值

定点小数的原码定义:
在这里插入图片描述
定点整数原码的定义:
在这里插入图片描述

原码的性质:

  • 带符号的绝对值表示,符号位为“0”表示该数为正,符号位为“1”表示该数为负。
  • “0”不惟一(正零、负零, 通常情况下,在编程时将正零、负零都理解为0,认为它们是相等的)。
  • 表示范围(机器字长为n):
    • 定点小数:-(1-2-(n-1))~+(1-2-(n-1))
    • 定点整数:-(2n-1-1)~+(2n-1-1)
  • 若字长为n,总共有2n个码点,但对应的真值只有 2 n-1 个。
  • 负数的原码大于正数的原码。
  • 真值与原码之间的转换

原码的优缺点:

  • 优点:
    • 简单、直观,机器数和真值间的相互转换很容易。
    • 实现乘、除运算的规则简单(乘数符号位与被乘数符号位进行异或逻辑)。
A B A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0
  • 缺点:实现加、减运算的规则较复杂。(需要先比较两个数绝对值的大小,确定结果的符号位,之后使用绝对值进行运算)

3、补码

在CPU的设计理念中,本着硬件越简单越好的原则,设计了一套编码,将减法运算改为加法运算,这样电路只需要设计一套加法器

(1)补码概念的引入

  • 有模运算:在实数范围内进行的运算。
  • 无模运算:在一定数值范围内进行的运算。
    在这里插入图片描述
    结论:
    • 假定M为模,若数a、b满足a+b=M,则称a、b互为补数。
    • 在有模运算中,去一个数等于上这个数对模的补数。

(2)补码的定义

设模为M,一个数 X 补码的一般定义为:[ X ]=M+X

  • 若X>0,则模M作为超出部分被舍去,[ X ]=X,因而正数的补码就是其本身;
  • 若 X < 0 ,则 [ X ]就是以 M 为模的补数。

定点小数的补码定义:
在这里插入图片描述
定点整数的补码定义:
在这里插入图片描述


(3)补码的性质

1)补码的符号位
用补码表示的数,若其最高位为“0”,则此数为正;若其最高位为“1”,则此数为负。

证明:
当0≤ X<1时,[ X ]=X,因此有0≤ [ X ]<1
当-1 ≤X<0时,[ X ]=2+X,因此有1≤[ X ]<2


2)补码中0的表示: 由补码定义,[ X ]=0,
∴ 0的补码是惟一的。


3)补码的表示范围

假设机器字长为n,则

  • 用补码表示的定点小数,其表示范围为:-1 ≤ X ≤+(1-2-(n-1));

  • 用补码表示的定点整数,其表示范围为:-2n-1 ≤ X ≤+(2n-1-1)。

    比原码多表示一个数。(因为0的补码是惟一的)


4)负数的补码值大于正数的补码值


5)补码与真值、原码之间的相互转换

  • 当X≥0时,X= [ X ]=[ X ]
    在这里插入图片描述
  • 当X<0时,假设机器字长为n,由定义得:
    在这里插入图片描述
  • 当X<0时,假设机器字长为n,由定义[ X ]=2+X 得:-X=2-[ X ]
    又因为:-X=| X |,因此在这里插入图片描述
    结论:当X<0时,
    在这里插入图片描述

“按位取反,末位加一”
数值部分自低位向高位搜索,第一个1及其以右的各位0保持不变,以左的各高位按位取反。

在这里插入图片描述


6)补码的符号位扩展

在计算机中,整数通常使用补码来表示,比如在C语言中,定义一个整型 int i ,这个整形在计算机中存储是用补码表示的,并且如果运行在32位的计算机上,它的整型是用32位的补码表示的。短整型 short j 应该是用16位的补码表示的
i = j +2,j+2的结果也应该是一个短整型,将它赋值给i,需要进行强制类型转换,把十六位的补码转换为32位的补码。
即一个补码用n位表示,现在需要将它扩展到2n位表示

  • 定点小数:在其低位填充适当位数的“0”
  • 定点整数:符号位扩展

】已知定点小数X1、X2用8位表示的补码如下:
     [X1]=0.1010110,[X2]=1.1100101。
现要将[X1]、[X2]扩展为16位表示,求16位表示的[X1]补、[X2]补。

     [X1]=0.1010110 00000000
     [X2]=1.1100101 00000000

结论1:要将n位纯小数补码变为2n位,只需在末尾添加n个“0”即可。


要将n位定点整数补码用2n位表示,如何处理?
即:如何将MOD 2n的补码变成MOD 22n的补码。
推导过程
用MOD 2n [X]补表示X以2n为模的补码,
用MOD 22n [X]补表示X以22n为模的补码。
在这里插入图片描述
当X ≥ 0时,
在这里插入图片描述
当X<0时,
在这里插入图片描述
综合X ≥ 0、X<0时的情况,
在这里插入图片描述

其中,XS为2n [X]的符号位。

结论2:将整数补码的模扩大2n倍,只需将[X]的符号位向左复制n位即可。


7)补码的算数右移(除2运算)

某一个数的补码经算数右移1位后,其最低有效位被移出,最高位(符号位)如何处理?
已 知 [ 𝑋 ] 补 , 求 [ 1 2 𝑋 ] 补 。 已知[ 𝑋]_补,求[\frac{1}{2} 𝑋]_补。 [X][21</

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值