8位字长纯小数,第一位为符号位,小数点在第一位后面,后七位为具体数值。将补码换算成十进制的方法:补码取反再加一,如果是负数(即第一位为1),还要最后加上负号。所以10000000取反为01111111,加一就变成10000000,第一位后面为小数点。所以是1.0,再加上负号,就是-1,
先看第一题,10000000,第一位是符号位,也就是-0.0000000,反码为-0.1111111,补码为反码加1=-1.00000000,即是-1.0,再看第二题11111111,也就是-0.1111111,反码为-0.0000000,补码为-0.0000001,答案不用多说了吧
1。用定点补码表示纯小数,采用 8 位字长,编码 10000000 表示的十进制数是?
正确答案是:-1 。
必须用“定义式”进行计算,才能这个答案。
因为,-1,只有补码、没有原码反码。
用“取反加一”,根本就解释不通。
因此,必须用“补码定义式”来证明。
---------
2。用带符号位的定点补码表示纯小数,8 位编码 11111111 表示的十进制数?
这是个负数。
用“取反加一”,可得原码:1000 0001。
由此,定点小数补码 11111111, 就代表小数-1/128。
用定点补码表示纯小数,采用8位字长。编码 10000000 表示的十进制数是?
答:定点小数补码 1000 0000,表示的十进制数是:-1。
用带符号位的定点补码表示纯小数,8 位编码 11111111 表示的十进制数?
答:定点小数补码 1111 1111,表示的十进制数是:
-1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + 1/64 + 1/128
= -1/128。
-----------------------
求二进制补码所代表的十进制数,方法,是极其简单的。
原码、取反加一,都是用不着的。
只要进行“二进制到十进制的转换”即可。
但是,要注意:补码的首位是负数。
所谓定点表示法,是指在计算机中所有数的小数点的位置人为约定固定不变。这样,小数点的位置就不必用记号"."表示出来了。一般地说,小数点可约定固定在任何数位之后,但常用下列两种形式:
定点纯小数:约定小数点位置固定在符号之后,如:http://202.116.0.143/wjyl/site/pic/pic11.jpg
显然,定点数表示法使计算机只能处理纯整数或纯小数,限制了计算机处理数据的范围。为了使得计算机能够处理任意数,我们事先要将参加运算的数乘上一个"比例因子",转化成纯小数或纯整数后进行运算。运算结果比例因子还原成实际数值。比例因子要取得合适,使参加运算的数、运算的中间结果以及最后结果都在该定点数所能表示的数值范围之内。