带符号数的表示
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1.3数的定点表示与浮点表示
一、定点表示法
计算机一次所能计算的二进制数的加减 乘除的位数是有限制的,这就决定了一次 计算是由精度限制的。我们知道,用来存 储数的位数越长,数的精度越高,但是计 算机一次所能运算的长度有限,所以要达 到高精度的运算有以下几个途径: 1.让计算机一次可以做更长的四则运算。 2.用人工分解的办法编制程序,把一个很长 的二进制数的四则运算分解成很多步较短 的二进制运算组合。
(2)定点小数的补码表示[X]补=
X 0≤X<1
(mod 2)
2-|X| -1≤X<0
例: 若X=0.1011,则X补=X=0.1011(mod 2) 若X<0,则X补=M+X=M-|X|。因而负数的 补码等于模M减去该数的绝对值。 例:若X=-0.1011,则 X补=2 - 0.1011=1.0101
一、原码表示法━最高位表正负,其余是 数的绝对值的大小。注意我们在日常生活 中用笔写小数的时候,很轻松的在纸上点 上小数点,但是小数点在计算机中一般是 计算机默认在某一位上,用不着留下空间 专门来存放这个表示点的信号的。
1.定点小数 X0 X1 X2 X3 X4
….. ….. ….. …..
Xn
2.1.2带符号数的表示
2.1.2带符号数的表示
一、补码表示法
补码的补充说明: 就象我们前面所演示给大家看的是补码 的发现其实是为了消灭减法,大家可以用 这样一种思维去理解补码:补码其实就是 专门针对负数而发明出来的,正数根本不 需要什么补码,补码是一个减法的差,所 以求一个数的补码就是做一个减法。
2.1.2带符号数的表示
而四位二进制定点小数的最小表示数只能是
2.1.3数的定点表示与浮点表示
一、定点表示法
0 0 0 1
换算成十进制就是0.03125,这就是精 度。换言之,数是每次跳跃0.03125增大或 减小这个大小的数的。在计算机科学中, 专业术语称之为“离散值”,因为如果把 这些二进制数标注在坐标轴上,大家看到 的是一些有固定间隔的一些点。
一、浮点表示法
2.移码(增码) X移=2m+X -2m≤X<2m 移码与补码的表示范围相同,只是在代 码形式上符号位相反而已。 举例: X=-(128)十进制=-(10000000)二进制 上面的两个数分别是十进制和二进制的真值, 设浮点数阶码共8位 移码为X=27+(-10000000)=00000000
X补=1.0110
反码?
1.3.2 补码的加法和减法 我们知道,对一个正数的补码表示按位求反后再在末位加1,可 以得到与此正数相应的负数的补码表示。我们把这种对一个二进制数 按位求反后在末位加1的运算称为求补运算,可以证明补码表示的数 具有以下特性:[X]补=〉[-X]补=〉[X]补在这里只用例子来说明。 由例1.13可见: [117]补=0075H [-117]补=FF8BH 现对[-117]补作求补运算: [-117]补为 1111 1111 1000 1011 按位求反后得 0000 0000 0111 0100 末位加1后得 0000 0000 0111 0101 此数正是[+117]补=0075H 这一特性在补码的加、减法运算中很有用。
2.1.3数的定点表示与浮点表示
第35页,关于溢出的重要概念 3.采用浮点计数法 二进制浮点数就是二进制的科学计数法。 科学计数法是有格式上的要求的,必须按 照严格的格式要求来转化二进制数。
2.1.3数的定点表示与浮点表示
一、浮点表示法
浮点数由一个定点整数和一个定点小数 组成。真值为:N=±REM, R=2 1.浮点数的原理性(格式) 就是科学计数法的二进制延伸。
由真值、原码转换为补码
正数的补码表示与原码相同。 (1)负数的原码转换为补码的方法之一 同整数。按位求反,末位加一。 此时符号位保持不变。 例: X原=1.1010
尾数变反 1.0101 末位加1 1 X补=1.0110
(2)负数原码转换为补码的方法之二 符号位保持不变,尾数部分自低位向高 位,第一个1及其以前的各低位0都保持不变, 以后的个高位按位求反。 例 X原=1.1010
一、补码表示法
12
11
10
9
负 数 区 域
正 数 区 域
8
7
6
X
0≤X<2n
(3)定点整数的补码表示[X]补=
(mod 2n+1)
2n+1-|X| -2n≤X<0
例:若X=1011000,则X补=01011000 例:若X=-1011000,则X补=27 -1011000 =10000000- 1011000 =10101000
2.1.3数的定点表示与浮点表示
一、定点表示法
而如果这个存储单元里存放的是定点小 数的话,比如存放的是0.1011,大家知道, 这个四位二进制小数的十进制数是: S=1×2-1+0×2-2+1×2-3+1×2-4 S=1×0.5+0×0.125+1×0.0625+1×0.0312 5
1 0 1 1
2.1.2带符号数的表示一、补码表示法
4.特点 (1)符号位既起指示正负号的作用,又参 与运算 (2)0只有一种表示法
2.1.3数的定点表示与浮点表示
一、定点表示法 定点小数 定点整数 二、浮点表示法 定点小数+定点整数
2.1.3数的定点表示与浮点表示
一、定点表示法
1.无符号定点整数(针对于正数来说)
例1、14 如机器字长为8位,则-46D的补码表示为: +46的补码表示为 0010 1110 按位求反后为 1101 0001 末位加1后 1101 0010 用十六进制数表示为 D 2 即[-46]补 =D2H 至此,读者应该已经学会了一个数的补码表示法。在这里,顺便说明一下, 用补码表示数时的符号扩展问题。所谓符号扩展,是指一个数从位数较少扩展到 位数较多(如从8为扩展到16位,或从16为扩展到32位)时应该注意的问题。对于 用补码表示的数,正数的符号扩展应该在前面补0,而负数的符号扩展则应该在 前面补1。例如,我们已经知道如机器字长为8位,则[+46]补=00101110,[- 46]补 =11010010;如果把它们扩展到16位,则[+46]补=0000000000101110=002EH, [- 46] 补=1111111100101110=FFD2H。 下面,再来讨论一下n为补码表示数的范围问题。8为二进制数可以表示 28=256个数,当它们是补码表示的带符号数时,它们的表数范围是 128<=N<=+127。一般说来,n为补码表示的数的表数范围是: -2n-1<=N<=2n-1-1 所以,n=16时的表数范围是:-32768<=N<=+32767
下面介绍一种比较简单的办法来写出一个负数的补码表示:先写 出与该负数相对应的正数的补码表示(用符号-绝对值法),然后将 其按位求反(即0变1,1变0),最后在末位(最低位)加1,就可以得 到该负数的补码表示了。 例1.13 机器字长为16位,写出N=-117D的补码表示。 +117D可表示为 0000 0000 0111 0101 按位求反后为 1111 1111 1000 1010 末位加1后 1111 1111 1000 1011 用十六进制表示为 F F 8 B 即[ -117 ]补=FF8BH
2.带符号定点整数 (纯整数,小数点在最低为之后)
3.带符号定点小数 (纯小数,小数点左边是符号位)
2.1.3数的定点表示与浮点表示
一、定点表示法
1.无符号定点整数 最高位再也不用表示正负号了,最高位 也表示数值的大小
1 2 3 4 5 6 7 8
2.1.3数的定点表示与浮点表示
一、定点表示法
关于数的精度的问题: 每一块CPU、CPU内的寄存器、主存储 器在它们的计算单元和存储单元中,在一 步四则运算中,所作的数的位数是有限的 和固定的,这就存在着数的精度的问题。 我们先看一个例子: 一个四位长度的存储单元 如果在这个存储单元内存放的是二进制整数 的话,这些整数的精度就是1
如果把最高位的0、1看成正负号的话,则上面的两个机 器数都表示数值0
2.1.2带符最高位表示符号, 其余位表示绝对值,则:应该为+0和-0, 所以原码表示法的机器数0有两种表示法。 例子:按照我们日常的书写习惯写就的真值 X=+0.1011和X=-0.1011,求其在计算机内部 的原码机器数
2.1.2带符号数的表示
一、原码表示法
3.原码表示法的特点: (1)0有两种表示 (2)小数表示范围-1<x<1 整数表示范围-2n<x<2n (3)运算时符号位单独处理 原码其实就是最高位使用0、1表示的符 号位加上数的绝对值来表示的一种只有计 算机才能使用而不是让人使用的一种机器 数。
2.1.2带符号数的表示
一、原码表示法
原码表示法的优点和缺点: 1.原码最大的好处就是乘除法容易,只 要把原码的绝对值部分进行运算而无须考 虑符号。 2.原码的缺点:怎么做减法?也就是说, 具体这一次的原码运算究竟是做加法还是 减法,是由运算符和两个运算数的正负号 共同决定的,而不是很明确地立刻知道这 个运算是什么?如3-(-2)=?这大大影响 计算机的运算速度。
2.1.2带符号数的表示
因为带符号数本质上就是将最高位的电信号 不当作数字内容而当作正负号内容,而每一内存 单元或寄存器单元都是有固定的bit位数的,所以 符号位就占了一位,表数的范围就有了变化。 一、原码表示法 二、补码表示法 三、反码表示法
最高位表示 正负号
2.1.2带符号数的表示
一、原码表示法
2.1.2带符号数的表示
一、原码表示法
2.定点整数
你看他与小数的位数标注有些不一样。 X [X]原码= 2n+|X| -2n<X≤0 0≤X<2n
Xn … … … … X4 X3 X2 X1 X0
2.1.2带符号数的表示
一、原码表示法
按照定义,我们看看这两个原码: 00000 10000 这两个数是+0和-0,所以0有两种表示。
2.1.3数的定点表示与浮点表示
一、浮点表示法
以二进制为例,规格化的尾数要求在: 0.5≤|M|<1之间,如果不在这之间,比如: 十进制0.0625他的二进制是:0.0001,并不 在 0.5≤|M|<1之间,但是我们可以用0.1×2-3 来调整使其落在0.5≤|M|<1之间。
2.1.3数的定点表示与浮点表示
2.1.2带符号数的表示
一、补码表示法
1.补码定义 (1)通式[X]补=M+X(mod M) X (2)定点小数的补码表示 [X]补= X 0≤X<1
2-|X| X (3)定点整数的补码表示[X]补= -1≤X<0 0≤X<2n
0≤X<1 (mod 2)
(mod 2)
2n+1-|X| -2n≤X<0
一、原码表示法
[X]原码=
X真值
0≤X<1
1+|X|真值 -1<X≤0
按照上面的公式的定义,大家看一看下 面的两个数 00000000 10000000
2.1.2带符号数的表示
一、原码表示法
根据原码的定义,最高位0代表+号,1代表-号, 随后的是数的绝对值的大小
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
2.1.2带符号数的表示
一、补码表示法
补码的出现就是解决减法的问题,它的出 现使得计算机中的加、减法运算非常简便, 它不必判断数的正负,只要将符号位也参与 运算,就能得到正确的结果。而且补码运算 中再也没有减法,都是加法运算。我们再回 过头看一看,符号位的由来,即某个模的差, 这个差是有自己的含义的,不能单纯看成符 号位,而其实它主要并不是起符号位的作用。
Ef Em Em-1 … E1 Mf M1 M2 … Mn
阶符 阶码E
数符
尾数M
2.1.3数的定点表示与浮点表示
一、浮点表示法
我们中学时学过科学计数法,当然那是 十进制的。S=1.2435×1026,这样又简短又 醒目。浮点数其实就是二进制的科学计数 法。 1.阶码的底——就是进制 2.阶码——比例因子RE的指数值,用带符号 定点整数表示,即前面所讲的二进制整数 机器数的原码、补码、反码的表示。 3.尾数——M,用带符号定点小数表示,用规 范化约定,比如: