说明
本文介绍的是 《软考-软件设计》,所以与工作中的会有些区别
将二进制小数位上的数乘以2的负n次方,然后相加得到的结果就是十进制数
在线进制转换:https://www.sojson.com/hexconvert.html
结论

4位二进制小数 转十进制(正数原码)
4位二进制小数 0100 转十进制
将 二进制 0100,转十进制,步骤如下:
| 符号位 | 第一位 | 第二位 | 第三位 | 第四位 | |
|---|---|---|---|---|---|
| 原二进制数 | 0 | 1 | 0 | 0 | 0 |
| 转十进制数-加权法 | 0 | 1*2^-1 |
0*2^-2 |
0*2^-3 |
0*2^-4 |
| 转十进制数-加权结果 | 0 | 1/2 | 0 | 0 | 0 |
结果是:0.5
4位二进制小数 0010 转十进制
将 二进制 0010,转十进制,步骤如下:
| 符号位 | 第一位 | 第二位 | 第三位 | |
|---|---|---|---|---|
| 原二进制数 | 0 | 0 | 1 | 0 |
| 转十进制数-加权法 | 0 | 0*2^-1 |
1*2^-2 |
0*2^-3 |
| 转十进制数-加权结果 | 0 | 0 | 1/4 | 0 |
各项相加:0 + 0 + 0.25 + 0,结果是:0.25
4位二进制小数 0111 转十进制
将 二进制 0111,转十进制,步骤如下:
| 符号位 | 第一位 | 第二位 | 第三位 | |
|---|---|---|---|---|
| 原二进制数 | 0 | 1 | 1 | 1 |
| 转十进制数-加权法 | 0 | 1*2^-1 |
1*2^-2 |
1*2^-3 |
| 转十进制数-加权结果 | 0 | 1/2 | 1/4 | 1/8 |
各项相加:0.5 + 0.25 + 0.125,结果是:0.875
4位二进制小数 - 正数原码最大值
0.875
n位二进制小数 - 正数原码最大值公式
0.875 = 1 - 0.125 = 1 - 2^-3
公式为:
1 - 2^-(n-1)
4位二进制小数 转十进制(负数原码)
4位二进制小数 1100 转十进制
将 二进制 1100,转十进制,步骤如下:
| 符号位 | 第一位 | 第二位 | 第三位 | 第四位 | |
|---|---|---|---|---|---|
| 原二进制数 | 1 | 1 | 0 | 0 | 0 |
| 转十进制数-加权法 | 1 | 1*2^-1 |
0*2^-2 |
0*2^-3 |
0*2^-4 |
| 转十进制数-加权结果 | 1 | 1/2 | 0 | 0 | 0 |
结果是:-0.5
4位二进制小数 1010 转十进制
将 二进制 1010,转十进制,步骤如下:
| 符号位 | 第一位 | 第二位 | 第三位 | |
|---|---|---|---|---|
| 原二进制数 | 1 | 0 | 1 | 0 |
| 转十进制数-加权法 | 1 | 0*2^-1 |
1*2^-2 |
0*2^-3 |
| 转十进制数-加权结果 | 1 | 0 | 1/4 | 0 |
各项相加:- (0 + 0.25 + 0),结果是:-0.25
4位二进制小数 1111 转十进制
将 二进制 1111,转十进制,步骤如下:
| 符号位 | 第一位 | 第二位 | 第三位 | |
|---|---|---|---|---|
| 原二进制数 | 1 | 1 | 1 | 1 |
| 转十进制数-加权法 | 1 | 1*2^-1 |
1*2^-2 |
1*2^-3 |
| 转十进制数-加权结果 | 1 | 1/2 | 1/4 | 1/8 |
各项相加:- (0.5 + 0.25 + 0.125),结果是:- 0.875
4位二进制小数 - 负数原码最小值
与正数相反,即:-0.875
n位二进制小数 - 负数原码最小值公式
-0.875 = - (1 - 0.125) = - (1 - 2^-3)
公式为:
- (1 - 2^-(n-1))
n位二进制小数 - 反码范围公式
正数反码
与原码相同
负数反码
在原码的基础上,按位取反,符号位不变,如下:
| 原码 | 反码 |
|---|---|
| 1000 | 1111 |
| 1100 | 1011 |
| 1010 | 1101 |
| 1001 | 1110 |
| 1110 | 1001 |
| 1101 | 1010 |
| 1011 | 1100 |
| 1111 | 1000 |
总结:可以看出,负数反码范围与负数原码相同
取值范围公式
所以反码范围与原码范围相同:
1 - 2^-(n-1) ~ - (1 - 2^-(n-1))
n位二进制小数 - 补码范围公式
正数补码
正数的补码:就是自己本身
正数补码最大值公式
与正数原码最大值公式相同:
1 - 2^-(n-1)
负数补码
负数的补码:在自身 反码 的基础上加 1
| 原码 | 反码 | 补码 |
|---|---|---|
| 1000(十进制负0) | 1111 | 0000(十进制0) |
| 1100 | 1011 | 1100 |
| 1010 | 1101 | 1110 |
| 1001 | 1110 | 1111 |
| 1110 | 1001 | 1010 |
| 1101 | 1010 | 1011 |
| 1011 | 1100 | 1101 |
| 1111 | 1000 | 1001 |
1000 表示什么?(-1的来源)
通过上面的计算得知,不会有补码是 1000
因此,这里就特别规定,这个二进制,定义为 -1,即:负数最大值
负数补码最小值
所以负数补码最小值是 -1
n位二进制小数 - 移码范围公式
补码的 符号位 取反,其他与补码相同
所以取值范围与补码相同:
-1 ~ 1 - 2^-(n-1)