定点数的表示
定点数的表示
无符号数
整个机器字长的全部二进制位为
数值位
,没有符号位,相当于数的绝对值
e.g.机器字长为8位,则数的表示范围为0~28-1
0000 0000~1111 1111即0~255;28-1=255
有符号数
二进制数的最高位为符号位0为正、1为负
,将符号数值化
(符号数=符号位+有效数字
)
符号数的机器表示有 原码、补码、反码、移码
X表示真值、[X]原、[X]补、[X]反、[X]移
机器数的定点表示
约定机器数中小数点位置固定不变。
定点小数
将小数点的位置固定在符号位之后、数据的最高位之前
,
符号位与数值之间用小数点隔开
定点整数
将小数点的位置固定在数据的最低位之后
符号位与数值之间用逗号隔开
原码、反码、补码、移码
X为真值,
若机器的字长为n+1位,尾数(数值的有效部分)为n位。
原码[X]原
符号位+真值绝对值
若机器字长为n+1位,
原码整数的表示范围为 -(2n-1)~2n-1,
原码小数的表示范围为 -(1-2-n)~1-2-n
真值0:+0、-0两种形式
(关于原点对称)
纯小数原码
菜鸡笔记:负几次方,就是该数几次方的倒数
低位补零
+0.75D:+0.11B [x]原=0.1100000
-0.75D:-0.11B [x]原=1.1100000
纯整数原码
高位补零
+19D: +10000B [x]原=0,0010000
-19D:-10000B [x]原=1,0010000
反码[X]反(过渡码)
符号位为0(正数),反码与原码相同
符号位为1(负数),数值位全部取反
e.g. X=+19D 机器字长为8
[X]原=0,0010011
[X]反=0,0010011
e.g. X=-0.75D 机器字长为8
[X]原=1.1100000
[X]反= 1.0011111
补码[X]补
在计算机系统中,数值一律用补码来表示和存储。
原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
-
补码性质:
-
在补码表示中,最高位(符号位)表示数的正负,在形式上与原码相同,即 0正 1负。但
补码的符号位是数值的一部分,由补码定义式计算而得。
-
补码的真值0:
只有唯一一种表示形式
[+0]原=00000000、[-0]原=10000000
[+0]反=00000000、[-0]反=111111111
[+0]补=00000000、[-0]补=00000000 -
负数补码表示的范围比原码稍宽,多一种数码组合。
对于定点数,
若为纯小数,表示范围为:-1~1-2-n(比原码多-1)
若为纯整数,表示范围为:-2n~2n-1(比原码多-2n) -
求补码:
正数的补码=原码
负数的补码=反码末位+1(要考虑进位)取反加1
将负数补码转为原码的方法相同:为数取反,末位+1
-
补码算数位移
符号位与数值位一起右移一位,并保持原符号位不变
,可实现除法(除以2) -
变形补码(模4补码)
模4补码:两个二进制位表示符号位,其余位与补码相同。双符号位00表示正,11表示负。任意一个正确数值的,模4补码的双符号位都相同,只需存储一个
定点整数
[X]原=1,0000000
[X]补=1,0000000,表示-27
若机器字长为n+1位,
则补码整数的表示范围==-2n~2n-1==(比原码整数多-2n)
定点小数
[X]补=1.0000000,表示–1
若机器字长为n+1位,
则补码小数的表示范围==-1~1-2-n==(比原码整数多-1)
移码
补码的基础上将符号位取反,只能表示整数(和补码一样真值0的表示形式只有1种
)
[X]移=2n+x(2n>x>=-2n,机器字长为n+1)
特性:
- 移码保持了数据原有的大小顺序,移码越大真值就大,移码越小真值就小。
- 移码全0时,对应真值的最小值为-2n,移码全1时,对应真值的最大值为2n-1
- 零唯一,[+0]移=-2n+0=[-0]移=2n-0=100···0(n个0)【
注意:补码和移码的0的表示形式不同
】 - 一个真值的移码和补码只差一个符号位。