汇编语言(二):数据在电脑中的存储形式

作为汇编语言的课程笔记,方便之后的复习与查阅

本篇为课程第二次课内容

整数

原码:无符号数的表示

用全部字长来表示数值大小,如unsigned char的取值范围是0~255( 2 8 − 1 2^8-1 281)。由此可见,相同位数的有符号数和无符号数表示的取值范围不同

补码:有符号数的表示

如果要表示有符号数,可以将最高位定义为符号位0为正数,1为负数

但此时,如果继续用原码形式来表示有符号数就会出现如下问题:

  • 1 表示为 0000 0001,-1 表示为 1000 0001
  • 1 + (-1) = 1000 0010 = -2 显然不正确

因此,人们发明了补码:

  • 若 x > 0,则补码、反码、原码一样
  • 若 x < 0,则补码=反码+1

n位补码表示的数值范围是: − 2 n − 1 -2^{n-1} 2n1 ~ + 2 n − 1 − 1 +2^{n-1} -1 +2n11,对应的补码为 1,000 0000 ~ 0,111 1111

通过补码,可以使减法运算用补码相加再求补的方法进行

小数

定点数

约定所有数值数据的小数点隐含在某一个固定位置上,称为定点数

通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数

  • 不足:定点数表达法形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。

最终,绝大多数现代的计算机系统采纳了浮点数表达方式。

浮点数

浮点数表示法来源于指数表示形式,如 193 193 193可以表示为 1.93 × 1 0 2 1.93\times10^2 1.93×102

  • 一般地,数的指数形式可记作:
    N = M × 2 C N=M \times 2^C N=M×2C其中, M M M称为“尾数”, C C C称为“阶码”。

在存储时,一个浮点数所占用的存储空间被划分为两部分,分别存放尾数和阶码。尾数部分通常使用定点小数方式,阶码则采用定点整数方式(阶码的移码偏移量为127)。尾数的长度影响该数的精度,而阶码则决定该数的表示范围

在这里插入图片描述

IEEE754标准浮点数表示

阶码和尾数的位数都是由数值分析专家确定的

  • 32位单精度格式

在这里插入图片描述

  • 64位双精度格式
    在这里插入图片描述

  • 例 :写出下列十进制数据的IEEE754编码
    0.15625 0.15625 0.15625 − 5 -5 5
    解:
    0.15625 0.15625 0.15625转换成二进制值为 0.00101 0.00101 0.00101,在IEEE754中规格化表示为 1.01 × 2 − 3 1.01×2^{-3} 1.01×23, 阶码 3 3 3用移码表示: e = 127 - 3 = 124 = 7 C H = 0111   1100 ( 8 位 ) e=127-3=124=7CH=0111\ 1100 (8位) e1273124=7CH=0111 1100(8),尾码 01 01 01 表示为 01000000000000000000000 ( 23 位 ) 01000000000000000000000 (23位) 01000000000000000000000(23)(尾数部分默认为1.M,因此不存储1),IEEE754编码为: 0   01111100   01000000000000000000000 = 3 E 20 , 0000 H 0\ 01111100\ 01000000000000000000000 = 3E20,0000H 0 01111100 01000000000000000000000=3E20,0000H
    − 5 -5 5转换成二进制值为: − 101 -101 101,在IEEE754中规格化表示为 1.01 × 2 2 1.01×2^2 1.01×22 e = 127 + 2 = 129 e=127+2=129 e1272129,,IEEE754编码为: 1   10000001   01000000000000000000000 1\ 10000001\ 01000000000000000000000 1 10000001 01000000000000000000000

  • 例 :将IEEE754单精度数(8位十六进制表示)转换为十进制数
    C 0 A 00000 H C0A00000H C0A00000H 3 F 880000 H 3F880000H 3F880000H
    解:
    C 0 A 00000 H C0A00000H C0A00000H
    1   10000001   01000000000000000000000 1\ 10000001\ 01000000000000000000000 1 10000001 01000000000000000000000
    ( − 1 ) 1 × ( 1.25 ) × 2 129 − 127 = − 1 × 1.25 × 2 2 = − 1.25 × 4 = − 5.0 (-1)^1×(1.25)×2^{129-127}=-1×1.25×2^2 =-1.25×4=-5.0 (1)1×(1.25)×2129127=1×1.25×22=1.25×4=5.0
    3 F 880000 H 3F880000H 3F880000H
    0   01111111   00010000000000000000000 0\ 01111111\ 00010000000000000000000 0 01111111 00010000000000000000000
    ( − 1 ) 0 × ( 1.0625 ) × 2 127 − 127 = 1 × 1.0625 × 2 0 = 1.0625 × 1 = 1.0625 (-1)^0×(1.0625)×2^{127-127}=1×1.0625×2^0 =1.0625×1=1.0625 (1)0×(1.0625)×2127127=1×1.0625×20=1.0625×1=1.0625

非数值数据

非数值数据的表示本质上是编码的过程

ASCII码

采用7位二进制代码对字符进行编码

  • 数字0-9的编码是0110000-0111001,它们的高3位均是011,后4位正好与其对应的二进制代码(BCD码)相符
  • 英文字母A-Z的ASCII码从1000001(41H)开始顺序递增,字母a-z的ASCII码从1100001(61H)开始顺序递增,这样的排列对信息检索十分有利
  • 最高位通常总为0,有时也用作奇偶校验位

中文字符编码:国标码GB2312

图像的二进制表示

分为采样量化处理两个步骤:

  • 采样就是要用多少点来描述一张图像,比如,一幅640×480的图像,就表示这幅图像是由307200个点所组成
  • 量化是指要使用多大范围的数值,来表示图像采样之后的每一个点。这个数值范围包括了图像上所能使用的颜色总数,例如,以4个bits存储一个点,就表示图像只能有16种颜色

声音的二进制表示

最常见的音频数字化方式是透过脉冲编码调制PCM

  • 声音经过麦克风,转换成一连串电压变化的信号,如图一所示。这张图的横座标为秒,纵座标为电压大小
  • 将这样的模拟信号转为 PCM 格式的方法,是先以等时距分割。我们假设用每 0.01 秒分割,则得到图二
  • 把分割线与信号图形交叉处的座标位置记录下来,可以得到如下资料,(0.01,11.65) 、(0.02,14.00) 、 (0.03,16.00) 、 (0.04,17.74) … …(0.18,15.94) 、 (0.19,17.7) 、 (0.20,20)
  • 由于已知道时间间隔是0.01 秒,我们只要把纵座标记录下来就可以,得到的结果就是 11.65 14.00 16.00 17.74 19.00 19.89 20.34 20.07 19.44 18.59 17.47 16.31 15.23 14.43 13.89 13.71 14.49 15.94 17.70 20.00 这一数列
  • 这一串数字就是将以上信号数字化的结果

在这里插入图片描述

视频的二进制表示

视频信息的两个衡量指标:采样频率(采样)采样深度(量化)

  • 采样频率是指每秒所捕获的画面帧数
  • 采样深度是指经采样后每帧所包含的颜色位(色彩值)。如:采样深度为8位,则每帧可达到256级单色灰度。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值