定点数表示
- 无符号数和有符号数
无符号数
和有符号数
都是机器数
1)无符号数
指整个机器字长
的全部二进制位均为数值位,没有符号位,相当于数的绝对值
。
若机器字长为8位,则数的表示范围为0~28-1,即0 ~255。
2)有符号数
在机器中,数的“正”,“负”号是无法识别的,有符号数用“0”表示“正”号,用“1”表示“负"号,从而将符号也数值化,并通常约定二进制数的最高位为符号位,即将符号位放在有效数字的前面,组成有符号数。
有符号数
的机器表示
有原码
、补码
、反码
和移码
。
为了能正确区别真值
和各种机器数
,约定用X表示真值
[X]原 表示
原码
[X]补 表示补码
[X]反 表示反码
[X]移 表示移码
- 机器数的定点表示
根据小数点的位置是否固定,在计算机中有两种数据格式:
定点表示和浮点表示
定点
表示即约定机器数中的小数点位置是固定不变的,小数点不再使用“.”
表示,而是约定它的位置。理论上,小数点位置固定在哪位都可以,但在计算机中通常采用两种简单的约定:
将小数点的位置固定在数据的最高位之前,或固定在最低位之后。一般常称前者为定点小数
,后者为定点整数
。
1)定点小数
定点小数是纯小数,约定小数点位置在符号位之后、有效数值部分最高位之前。若数据X的形式为X = x0 . x1……xn,(其中x0为符号位,x1——xn是数值的有效部分,也称尾数,x1为最高有效位),则在计算机中的表示形式如图所示(设机器字长n+1位)。①当x0=0,x1——xn均为1时,x为其所能表示的最大正数,真值等于1 - 2-n.
②当x0=1,x1——xn均为1时,X为其(原码)所能表示的最小负数,真值等于2-n - 1。
2)定点整数定点整数是纯整数,约定小数点位置在有效数值部分最低位之后。若数据X的形式为X = x0x1……xn
(其中x0为符号位,x1——xn是尾数,xn为最低有效位),则在计算机中的表示形式如图所示:①当x0 = 0, x1——xn均为1时,x为其所能表示的最大正数,真值等于2n-1。
②当x0 = 1, x1——xn均为1时, X为其(原码)所能表示的最小负数,真值等于1 - 2n。
- 原码,补码、反码、移码
1)原码表示法
原码是一种比较简单、直观的机器数表示法,用机器数的最高位表示该数的符号,其余的各位表示数的绝对值。原码的定义如下:
- 纯小数的原码定义
如果字长为n+1
,则原码小数的表示范围为:2-n-1 ≤ x ≤ 1-2-n - 纯整数原码定义
如果字长为n+1
,则原码小数的表示范围为:1 - 2n ≤ x ≤ 2n - 1
2)补码表示法
加减法采用统一的加法操作
- 纯小数的补码定义
如果字长为n+1
,则原码小数的表示范围为:-1 ≤ x ≤ 1 - 2n - 纯整数的补码定义
如果字长为n+1
,则原码小数的表示范围为:- 2n ≤ x ≤ 2n - 1
0的
补码、移码
唯一,原码、反码
不唯一
定点数的运算
- 定点数移位运算
移位运算
根据操作对象的不同分为算术移位
和逻辑移位
。
有符号数的移位称为算术移位,逻辑移位的操作对象是逻辑代码,可视为无符号数。
1)算术移位
算术移位的对象是有符号数,在移位过程中符号位保持不变。
对于正数,移位后出现的空位均以0添之。
对于负数,由于原码、补码、反码的表示形式不同,因此当机器数移位时,对其空位的添补规则也不同。
注意:不论是正数还是负数,移位后其符号位均不变,且移位后都相当于对真值补0,根据补码、反码的特性,所以在负数时填补代码有区别。
对于原码,左移位若不产生溢出, 相当于乘以2(与十进制的左移一位相当于乘以10类似),右移一位, 若不考虑因移出而舍 去的末位尾数,相当于除以2。
正数的原码、补码与反码都相同,因此移位后出现的空位均以0添之。
对于负数,由于原码、补码和反码的表示形式不同,因此当机器数移位时,对其空位的添补规则也不同。①负数的原码数值部分与真值相同,因此在移位时只要使符号位不变,其空位均添0.
②负数的反码各位除符号位外与负数的原码正好相反,因此移位后所添的代码应与原码相反,即全部添1。③分析由原码得到补码的过程发现,当对其由低位向高位找到第一一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同。因此负数的补码左移时,因空位出现在低位,则添补的代码与原码相同,即添0;右移时因空位出现在高位,则添补的代码应与反码相同,即添1.
(2)逻辑移位
逻辑移位将操作数视为无符号数,移位规则:
逻辑左移时,高位移丢,低位添0;
逻辑右移时,低位移丢,高位添0。
注意:逻辑移位不管是左移还是右移, 都添0.