机器数
- 原码:
- 反码:
- 补码:计算机中使用的补码来计算和存储数据
- 移码:
| 十进制数 | 原码 | 反码 | 补码 |
|---|---|---|---|
| 3 | 0b011 | 0b011 | 0b011 |
| 0 | 0b000 | 0b000 或 0b111 | 0b000 |
| -3 | 0b111 | 0b100 | 0b101 |
| -4 | \ | \ | 0b100 |
原码一位加法
补码一位加法
原码一位乘法
补码一位乘法
原码一位除法
补码一位除法
BCD码
- Binary-Coded Decimal,二进制编码的十进制数,即使用4位二进制数来表示1位十进制数
- BCD码可分为有权码和无权码两类。常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码
- 余3码是由8421码的每个码组加3(0b0011)形成的,常用于BCD码的运算电路中
- 余3循环码中每个编码中的1和0没有确切的权值,整个编码直接代表一个数值。主要优点是相邻编码只有一位变化,避免了过渡码产生的“噪声”。余3循环码是在余3码的基础上得来的,余3码的最高位不变,低位依次与高一位进行异或运算得到当前位的值。例:余3码0b0011:第一位1与第二位1进行异或得0,第二位1与第三位0进行异或得1,第三位0与第四位0进行异或得0,最高位为0不变,得余三循环码0b0010
| 十进制数 | 8421码 | 余3码 | 余3循环码 |
|---|---|---|---|
| 0 | 0b0000 | 0b0011 | 0b0010 |
| 1 | 0b0001 | 0b0100 | 0b0110 |
| 2 | 0b0010 | 0b0101 | 0b0111 |
| 3 | 0b0011 | 0b0110 | 0b0101 |
| 4 | 0b0100 | 0b0111 | 0b0100 |
| 5 | 0b0101 | 0b1000 | 0b1100 |
| 6 | 0b0110 | 0b1001 | 0b1101 |
| 7 | 0b0111 | 0b1010 | 0b1111 |
| 8 | 0b1000 | 0b1011 | 0b1110 |
| 9 | 0b1001 | 0b1100 | 0b1010 |
8421码的运算
- BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样当将 BCD码传送给运算器进行运算时,其结果需要修正
- 修正的规则是:两个BCD码相加,如果和等于或小于0b1001(即十进制数9),则不需要修正;如果相加之和在0b1010到0b1111(即十进制数10~15)之间,则需加 6 进行修正;如果相加过程中,本位产生了进位,则本位也需加 6 进行修正。(直接越过了0b1111,例如0b1001 + 0b1001 = 0b10010,修正后:0b11000)
浮点数(IEEE 754)
- 浮点数 = | 数符 | 阶码+偏移值 | 尾数 |
- 规格化:1.xxxx * 2yyyy (yyyy为阶码,xxxx为尾数,均为二进制表示,数符即数的符号)
| 总位数 | 数符 | 阶码 | 尾数 | 偏移值 | |
|---|---|---|---|---|---|
| 单精度 | 32 | 1 | 8 | 23 | 127 |
| 双精度 | 64 | 1 | 11 | 52 | 1023 |
特殊值
| e(阶码+偏移值) | 尾数 | 含义 |
|---|---|---|
| 0 | 0 | ±0 |
| 2e-1 | 0 | ±∞ |
| 2e-1 | 非0 | NaN(非数) |

2万+

被折叠的 条评论
为什么被折叠?



