数据表示
以下具体框架来自华中科技大学 谭志虎 老师,本人根据框架补充自己的一些体会和见解。仅当作学习笔记使用
Target:
二、数据表示
数字与编码
进位制数及其相互转换
- 二进制编码
- 两种状态,容易与物理状态对应
- 可以表示任何信息
- 位数有限时不能表示循环小数
- 运算规则简单,适合用布尔代数设计电路,制造成本低
- 数制转换
- 二进制转十进制
- 加权展开
- 十进制到二进制
- 整数除二取余,先余为低
- 小数乘2取整,先整为高
- 二进制转八进制 或16进制
- 从小数点向左右3/4位一分组
- (10 011 100 . 01)_2= ( 234 . 2 )_8 (10011100.01)2=(234.2)8
- (1001 1100 . 01)2 = ( 9C . 4 ){16} (10011100.01)2=(9C.4)16
- 二进制转十进制
- 二进制编码
真值和机器数
真值
- 用“+”、 “-”表示符号的数据格式,是机器数代表的实际值
- 用于数据输出
机器数(码)
- “0”或“1”表示的符号和数值的数据格式
- 用于计算机存储,运算
常见机器码
- 原码
- 符号化的数值,“0”表示正数,“1”表示负数
- 最高位符号位,其它是数的绝对值
- 在数轴上的表示区间对称
- 存在正零和负零两个零
- 运算比较复杂,主要用于表示浮点数的尾码
- 反码
- 符号位与原码相同,表示范围也相同
- 在数轴上的表示区间对称
- 当真值为正数时,反码和原码相同
- 当真值为负数时,数值部分要逐位取反
- 主要用于求补
- 补码
- 数据表示建立在“模”的概念基础上,模的值即为符号位进位的权值。
- 模2的补码
- 定点小数模值为2
- 定点整数模值为2^{n+1}2n+1
- 模4的补码:变形补码
- 定点小数模值为4
- 定点整数模值为2^{n+2}2n+2
- 其中n为数值位位数
- 模2的补码
- 当真值为负数时,补码等于真值加上模
- 在数轴上的表示区间不对称
- 唯一的机器零(少一个)
- 最左侧比原码、反码多表示一个最小负数
- 补码符号位可以直接参与加减运算,运算电路实现方便
- 计算机中整数采用补码进行存储、表示和运算
- 数据表示建立在“模”的概念基础上,模的值即为符号位进位的权值。
- 移码
- 只用于表示整数,也称偏移码,真值+常量
- 方便比较大小,数字越大,真值越大
- *****移码和补码的符号位相反,数值位相同
- 为了确保所有码都为正,通常加上偏移量后二进制数为000….
- 因此0也是唯一的
- 为了确保所有码都为正,通常加上偏移量后二进制数为000….
- 用于表示浮点数的阶码
- 原码
机器码表示范围(只需记住补码公式,加模数)
补码机器零唯一,相比其他编码多表示一个绝对值最大的负数,小数为-1,整数为-2^{n}−2n
机器码在数轴上的表示(对比理解)
机器码之间的转换
- 利用编码特性直接转换
- 转换为真值再转换(简单有效)
考研真题
- 真题1
- 真题2
- 真题3
- 真题1
字符与字符串
ASCII码
- 国际通用的字符码,7位表示128个字符
- 实际占用1个字节,最高有效位MSB=0(二进制的最左边那位)
- 33个控制字符;其余为可打印字符
- 常见代码(了解)
- 20H 开始是空格等可打印字符
- 0 ~ 9 这 10 个数字是从30H 开始的一个连续区域
- 大写英文字母是从 41H 开始的一个连续区域
- 小写英文字母是从 61H 开始的一个连续区域
汉字编码
分类
- 输入码: 汉字的输入
- 拼音,五笔等
- 机内码: 汉字的存储
- GB2312、GBK、GB18030、Unicode、BIG5等标准
- 字形码: 汉字的输出
- 输入码: 汉字的输入
GB2312(国标码)
区位码
- 矩阵形式,由4位十进制数构成,前2位区码,后2位位码
汉字机内码:国标码 (16进制)+ 8080H
汉字机内码:区位码(16进制)+A0A0H
国标码:(区位码的十六进制表示)+2020H
- 列:1、区号为20,位号为83
- 2、将区位号2083转换为十六进制表示为1453H
- 3、1453H+2020H=3473H,得到国标码3473H
- 4、3473H+8080H=B4F3H,得到机内码为B4F3H
- 区分ASCII码,MSB=1
- GB2312汉字占用两个字节,有效位14位
字符串
- 小端模式:数据最高有效字节存放在高地址单元中
- 大端模式:数据最高有效字节存放在低地址单元中
从低地址到高地址逐个字符储存,以”\0“结束的字符序列
数据表示
- 定义
- 将数据按照某种方式组织,以便机器硬件能直接识别和使用。
- 关键问题
- 数据表示的范围和精度
- 数据存储和处理的代价
- 软件的可移植性问题
- 数据格式
- 使用二进制编码表示实际数据的结构形式
- 定义
定点数的表示
- 定点数概念
- 小数点位置固定的数
- 定点数分类
- 有符号数无符号数
- 机器码到底有无符号取决于输出形式
- C语言中printf中%d输出,%u表示无符号
- 定点整数和定点小数
- 定点小数:小数点隐含在符号位之后,有效数值部分最高位之前
- 定点整数:小数点在有效数值部分最低位之后
- 有符号数无符号数
- 溢出问题(运算章节继续深入)
- 定点整数存在上溢问题(超出表示范围)
- 定点小数存在精度溢出问题(超出表示精度)
- 定点数概念
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jjyaoao's Home!
评论
LivereValine