软考-软件设计:n位二进制定点小数,原码、反码、补码、移码的取值范围

说明

本文介绍的是 《软考-软件设计》,所以与工作中的会有些区别

将二进制小数位上的数乘以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)

原文出处:/show_1GWrPBkFncR.html