定点数的表示
视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502
前言
在本篇中,你将掌握
原码、反码、补码、移码的定义和范围
原码、反码、补码、移码的转换
定点数:小数点的位置固定 ——常规技术
浮点数:小数点的位置不固定 ——科学计数法
1 无符号数
无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。且通常只考虑无符号整数
2 有符号数
2.1 原码
原码的表示,分成定点整数和定点小数:
定点整数:符号位 + 数值部分(尾数),如 +5通常写为0,101(假设机器字长是4位)
定点小数:符号位 + 数值部分(尾数),如 -0.5通常写为1,100(假设机器字长是4位)
其表示范围如上图,对于机器字长为n+1位,原码整数可以表示的范围为:
0
至
2
0
+
2
1
+
2
2
+
.
.
.
+
2
n
−
1
=
2
n
−
1
(
不
考
虑
符
号
位
)
0至2^0+2^1+2^2+...+2^{n-1}=2^n-1 (不考虑符号位)0至20+21+22+...+2n−1=2n−1(不考虑符号位)
原码小数可以表示的范围为:
0
至
2
−
1
+
2
−
2
+
.
.
.
+
2
−
(
n
)
=
1
−
2
−
n
(
不
考
虑
符
号
位
)
0至2^{-1}+2^{-2}+...+2^{-(n)}=1-2^{-n} (不考虑符号位)0至2−1+2−2+...+2−(n)=1−2−n(不考虑符号位)
且真值0有 +0和-0的两种形式
2.2 反码
反码:
若符号位为0,则反码与原码相同
若符号位位为1,则数值位全部取反
反码只是求补码的一个过程,其表示和范围如上图,不再阐述。
2.3 补码
补码:
正数的补码 = 原码
负数的补码 = 反码末位 + 1(要考虑进位)
注意:补码的真值0只有一种表示形式了,且规定
定点整数1,0000000表示 −
2
7
-2^7−27,也因此定点整数的补码的范围为
−
2
n
至
2
n
−
1
-2^n至2^n-1−2n至2n−1
定点小数1.0000000表示−
1
-1−1,定点小数的补码的范围为
−
1
至
1
−
2
−
n
-1至1-2^{-n}−1至1−2−n
而将补码转为原码的操作,对于正数 原码 = 补码,对于负数:尾数取反,末位+1
2.4 移码
移码:补码的基础上将符号位取反。注意:移码只能用于表示整数
练习:
3 小结
本篇重点:
(1)原码、反码、补码、移码的定义和范围
(2)原码、反码、补码、移码的转换
本篇较为重点,需要自行计算掌握。