2_数据的运算和表示
🧀
数制与编码
-
定点小数补码
1000 0000表示-1 -
定点整数补码
1000 0000表示-128 -
移码只能表示整数
-
C语言强制类型转换
- 无符号数和有符号数:不改变数据内容,改变解释方式
- 长整数变短整数:高位截断,保留低位
- 短整数变长整数:符号扩展
-
为什么要对数据进行长度扩展?
ALU的位数是固定的- 通用寄存器的位数是固定的
- 主存内的各种数据的长度不一,有时需要把短数据扩展为长数据
-
零扩展:适用于无符号整数,用
0扩展高位 -
符号扩展:适用于有符号整数(补码),用
符号位扩展高位 -
异或妙用:n bit进行异或,有奇数个
1,异或结果为1,偶数个1,异或结果为0 -
反演律
- 主存地址用无符号二进制整数表示,不是原码!
运算方法与运算电路
- 带标志位的加法器
| 缩写 | 全称 | 功能 |
|---|---|---|
| OF | Over Flag | 1 溢出 |
| SF | Sign Flag | 1 为负 |
| ZF | Zero Flag | 1 结果为0 |
| CF | Carry Flag | 1 溢出 |
- 原码的算术移位:符号位保持不变,仅对数值位进行移位
- 无符号数溢出判断
- 两个正数相加,进位位为0,则没有溢出
- 两个负数相减,进位位为1,则没有溢出
- 组合逻辑电路和时序逻辑电路区别
| 特性 | 组合逻辑电路 | 时序逻辑电路 |
|---|---|---|
| 记忆性 | 无 | 有 |
| 输出依赖 | 仅当前输入 | 当时的输入和过去的状态 |
| 时钟信号 | 通常不需要 | 大多数需要 |
| 反馈 | 通常无 | 有 |
浮点数的表示
- 浮点数对阶中,小阶对大阶,不存在阶码减小的情况
- IEEE754浮点数对阶,右规隐藏位的1直接移出来,显示地进入尾数部分
- 补码:正数最高位有效位为1,负数最高位有效位为0
- 只有浮点数才需要舍入,定点数没有舍入的概念
- 在浮点数舍入中
- 左规不用舍入
- 对阶和右规都可能要舍入
- 舍入不一定产生误差
- 按边界对齐存储的含义是:信息单元的存储地址是其字节长度的整数倍,即
起始地址%字节长度 = 0 - P65-27
- C标准没有明确规定有符号数右移是算数右移还是逻辑右移,这取决于编译器。为了代码的可移植性,最好避免对有符号数进行右移操作。如果题干说明了是无符号数,那么右移只能是逻辑右移 P66-31
- C语言中的
struct类型有两个重要要求:- 起始地址%该变量的长度 = 0
- struct的长度必须是成员中最长对应值(即该变量的字节长度)的整数倍
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 None!

