百度
360搜索
搜狗搜索

定点补码运算,定点数的加减乘除详细介绍

本文目录一览: 计算机组成原理,定点运算问题,补码运算。老是不会,求详解

这一步是由上一步再通过补码转换成原码得来的。补码-原码:符号位不变,减一,取反,再把符号位变成符号,0就是+,1就是-,望采纳
按图中计算:[A-B]补=1,1110111
上述“[A-B]补”即A-B的补码,将其转换为原码,即:
减1,得:1,1110110
除首位符号位外,其余位取反,得:1,0001001
因为符号位为1,由上一步,得:-1001
转换为十进制,得:-9
由上可知:A-B=-9
已知:[B]补码=0001 1000。
对其“减一取反”,即可得:[-B]补码=1110 1000。
然后相加:
   [A]补码=0 000 1111
  [-B]补码=1 110 1000
---相加----------
   可得:  1 111 0111
这是一个负数,对其“减一取反”,可得绝对值:
   0 000 1001 = 9(十进制)。
那么,1 111 0111,这是 [-9]补码。
所以,A-B =-9。
原码转补码:取反加1
补码转原码:减1后取反
由于[A-B]补=11110111
对 11110111进行转原码操作以得到A-B的值.
步骤为
减1:11110111-1=>11110110
取反:11110110 =>00001001 省略前导0 => 1001
标记负数: -1001
这题目,关键是:从 [B]补,求出 [-B]补。
对一个补码,减一、取反,即为相反的数的补码。
 
+24 的补码是:0001 1000。
减一,得:0001 0111;
然后取反:1110 1000。 这就是-24 的补码。

计算机组成原理的题目,考定点计算请问补码表示是怎么表示出这个r1,r2,r3?

数字后面带有H表示这是十六进制的数,并不是H表示16,这在数字电子技术领域广泛使用。
在十六进制中,前十个数依旧是十进制的,从0-9,但超过9就开始用英文字母来表示,比如10用A(a)表示,11用B(b)表示,以此类推,十六进制里面最大的数是15,用的是F(f)表示。
注:表示的时候大小写随意,但一般用大写。
这个是数码和数制的知识,可能你没学数字电子技术,所以会有这方面的疑惑。
这里的数字,其实,都是补码。
r1 = FEH = 1111 1110B = [-2]补。 所以,r1 真值是-2。
r2 = F2H = 1111 0010B = [-14]补。 r2 真值是-14。
。。。
用-256,来求真值,是应用了“求补码的定义式”。
习惯了“求反加一”的人,是看不懂这个方法的。
----
X 如果是负数,其八位补码的定义式如下:
  [X]补 = 模-|X| = 256 + X
即可导出:
  X = [X]补-256。
这种方法,比“求反加一”,更简单。且更有理论性。

定点数的加减乘除

定点数的加减其实可以归为一类。

定点加减运算主要用到补码运算。

加法表达式为[X+Y]补=[X]补+[Y]补;就是说X+Y补码的结果为X的补码加上Y的补码,即结果为补码。

减法表达式为[x-y]补=[X]补+[-Y]补;就是说X-Y的补码结果就是用加法表示的,是用X的补码和-Y的补码相加得到的。[-Y]补等于[Y]补各位取反,包括符号位,然后加1就得到了。

溢出就是给定一个固定的容器,容器里盛装的液体溢出来了,我就不多解释了。计算机中的溢出就是给了你一个固定的位数去盛放位数,某个数在这个容器里装不下了就是溢出。定点数的加减运算就会出现这种情况。

那么如何判断加减溢出,粗糙的方法是正正相加为负溢出,负负相加为正溢出,正-负为负溢出,负-正为正溢出。

高端操作判断溢出有个名字:变形补码法,其实特别简单,既可以看出溢出,也可以看出溢出的方向,是向正数方向溢出了还是负数方向溢出了,一目了然。

就是符号位用双符号位表示就可以啦,就这么简单。符号位为00、11为正负数,若出现01、10则溢出了。01为上溢,10为下溢了。

主要有原码一位乘、补码一位乘。

符号位不参加运算,数值位均以绝对值出现,X*Y中X为被乘数,采用双符号位,Y为乘数,采用单符号位。部分积初始化为0。然后接下来的操作就是for循环了。

for(y的最低位;该位没有超出y最高位;y的下一位)

{ 若y该位为1,部分积+X的绝对值,生成的新的部分积右移一位;

若y该位为0,部分积+0,生成的新的部分积右移一位;

}

结果表示:X符与Y符的异或产生的符号作为结果的符号。

符号位参与运算。

X*Y中,被乘数采用双符号位,乘数采用单符号位,乘数的最低位后添加上一个附加位,附加位值为0,仍然存在部分积。

for(y的最右边两位(初始的话为附加位与原来的最低位);y的两位不是小数点左右两边的数;y向左挪动两位)

{?

若y的两位为00或11,则部分积+0,新的部分积右移两位;

若y的两位为01,则部分积+[X]补,新的部分积右移两位;

若y的两位为10,则部分积+[-X]补,新的部分积右移两位;

}

其实到这了现在,应该会发现原码一位乘与补码一位乘很相似,部分积都是要移动n次(即X、Y的最高有效位个数)。

符号位不参与运算,在X/Y中,X、Y的绝对值的补码需要。双符号位补码运算。

步骤:for(i=1;i<=X、Y的最高有效位个数;i++)

{

判断X>Y?

如果X>Y,商1,生成结果左移1位;

如果X
<y,商0,生成结果+y绝对值补码,生成的结果左移1位;

}

结果为:商,余数,上述中最后生成的结果就是余数的尾数,余数由尾数与阶码表示,阶码一般为负数,左移几次就是几,例如:M*2的-5次方,就是余数产生左移了5次。

由于符号位不参加运算,最后商的符号为X、Y的符号异或产生,余数的符号与被除数的符号相同。

符号位不参加运算,参与运算的是绝对值的补码加减。整个过程类似一个循环的判断。假设余数最初为被除数。

判断:余数>除数,商1,结果左移1位,新生成的余数-除数;

余数
<除数,商0,结果左移一位,新生的余数+除数;

该判断需要左移n次(即参与运算的数的有效位的个数)。若左移第n次产生的余数为负,需加上除数使余数为正。余数的符号与被除数的符号一致。

补码一位除设计到校正问题,此处只针对精度不严格的除法。

运算:补码双符号位的加减。

规则:被除数(余数)与除数同号,被除数(余数)-除数,若异号,被除数(余数)+除数;新生成的余数如果与除数同号,商1,结果左移一位;若新生成的余数如果与除数异号,商0,结果左移一位。如此往复,直到左移发生了n次(即被除数、除数的有效位个数)。

值得注意的是:最后一次上商,无论余数与除数是否同号,均商1。

到了现在,可以发现,原码的乘除没有符号位直接参与运算,因而都是对绝对值进行操作的。
</除数,商0,结果左移一位,新生的余数+除数;
</y,商0,生成结果+y绝对值补码,生成的结果左移1位;

怎样用定点补码表示纯小数?

分类: 电脑/网络 >> 反病毒
解析:

所谓定点表示法,是指在计算机中所有数的小数点的位置人为约定固定不变。这样,小数点的位置就不必用记号"."表示出来了。一般地说,小数点可约定固定在任何数位之后,但常用下列两种形式:
定点纯小数:约定小数点位置固定在符号之后,如:202.116.0.143/wjyl/site/pic/pic11
显然,定点数表示法使计算机只能处理纯整数或纯小数,限制了计算机处理数据的范围。为了使得计算机能够处理任意数,我们事先要将参加运算的数乘上一个"比例因子",转化成纯小数或纯整数后进行运算。运算结果比例因子还原成实际数值。比例因子要取得合适,使参加运算的数、运算的中间结果以及最后结果都在该定点数所能表示的数值范围之内。

用定点补码表示纯小数

先看第一题,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

显然,定点数表示法使计算机只能处理纯整数或纯小数,限制了计算机处理数据的范围。为了使得计算机能够处理任意数,我们事先要将参加运算的数乘上一个"比例因子",转化成纯小数或纯整数后进行运算。运算结果比例因子还原成实际数值。比例因子要取得合适,使参加运算的数、运算的中间结果以及最后结果都在该定点数所能表示的数值范围之内。
2:补码是11111111,那反码是11111110 ,原码是00000001 故是1
8位字长纯小数,第一位为符号位,小数点在第一位后面,后七位为具体数值。将补码换算成十进制的方法:补码取反再加一,如果是负数(即第一位为1),还要最后加上负号。所以10000000取反为01111111,加一就变成10000000,第一位后面为小数点。所以是1.0,再加上负号,就是-1,

用定点补码表示纯小数,采用8位字长,编码10000000表示的十进制数是-1,请教怎么计算出来的?

显然,你只会“取反加一”这个做法。
而且,你还不知道“原码比补码少一个”的事。
对于定点小数-1,它只有补码,却并没有原码和反码。
所以,对于-1,是绝对不可能,用“取反加一”求出补码来的。
求补码的正规做法,是利用“补码的定义式”。
如图所示,X 是纯小数时,补码定义如下:
  当  0 <= X < 1, [ X ]补 = X
  当 -1 <= X < 0, [ X ]补 = 2 + X
因此,[-1]补 = 2-1 = 1.0。
补齐八位,-1 的补码就是:1000 0000。
你得从整数补码入手,才能理解。
八位整数补码,小数点是在最右边。所代表的数值是:-128~+127。
对应的补码是:1000 0000~0111 1111。
其中,-128,就是最小值,其补码是 1000 0000。
但是,-128 只有补码,没有原码反码。
用“取反加一”来求-128 的补码,是求不出来的。
必须使用“补码的定义式”才能求出来。
--------
八位的定点小数补码,小数点是在“符号、数值”中间。
与整数补码相比,小数点左移了七位。
这就相当于除以 128。  
那么,所代表的数值是:-128/128~+127/128。
即:-1 ~ +127/128。
其对应的补码,仍然是:1000 0000~0111 1111。
其中,-1,就是最小值,其补码,就是 1000 0000。
 
同样,-1,也是:【只有补码、没有原码反码】,
所以,用“取反加一”的方法,解释不通。
 
证明完毕。
也可用公式表示,若X是纯整数,则:
X 0<=X<=2^(n-1)-1
[X]补
2^(n-1)+x -2^(n-1)-1<=X<=0
若X是纯小数,则:
X 0<=X<=1
[X]补
2+x -1<=X<=0
[-1]补=1 1111111 负数补码是对它的原码(除符号位外)各位取反
第一位不变,其它相反。所以是10000001
编码11111111表示-0.0078125。
因为:编码1111111的反码是0000000,再加1为:0000001,是0.0078125。
你怎么尽给我出难题
机器数的补码可由原码得到。若机器数为正数,则其补码与原码一样;如果机器数为负数,则其补码是对它的原码(除符号位外)各位取反,再加1而得到的(也就是对其反码再加1)。也可用公式表示,若X是纯整数,则:
X 0<=X<=2^(n-1)-1
[X]补
2^(n-1)+x -2^(n-1)-1<=X<=0
若X是纯小数,则:
X 0<=X<=1
[X]补
2+x -1<=X<=0
[-1]补=1 1111111 负数补码是对它的原码(除符号位外)各位取反
第一位不变,其它相反。所以是10000001
编码11111111表示-0.0078125。
因为:编码1111111的反码是0000000,再加1为:0000001,是0.0078125。
以上希望对你有用

阅读更多 >>>  补码怎么转化源码

设有一个16位定点补码运算器,数据最低的序号为1,运算器可实现下述功能?

由于运算器可以实现A±B-A、BxC一A、C和A÷B一C三种功能,因此运算器第3位及A、C寄存器第三位输入逻辑应该是一个多路选择器,根据不同的功能选择不同的输入信号。

如何判断定点和浮点补码加减运算结果是否溢出

举例说明,已知 x=-0.110101,y=0.101011,
用变形补码(即 双符号位这补码) 求y+x的值并指明结果是否溢出
用8位字长变形补码表示:
[y]补 =00.101011
[x]补 =11.001011 (+
---------------------
[x+y]补=11.110110, 双符号位为11,无溢出,结果为负
[x+y]反=11.110101
[x+y]原=11.001010
结果x+y= -0.001010

举一个计算机补码计算的例子,以及怎么计算

在计算机系统中,数值,一律采用补码表示和存储。
补码,实际上,是一个“代替负数”的正数。
比如,两位十进制数的计算:
  25 - 1 = 24
  25 + 99 = (进位) 24
只要你忽略进位,仅取两位数,这两种算法,就是等效的。
那么,+99 就能代替-1。同时,加法,也就代替了减法运算。
+99 就称为“-1 的补数”。
补数怎么求? 就是:负数+进位值。
进位值,也就是 2 位 10 进制数的计数周期。
----------------
计算机使用二进制,补数,就改称为:补码。
对于 8 位二进制,其进位值是 2^8 = 256。
那么:
-1 的补码,就是 256-1 = 255 = 1111 1111。
-2 的补码,就是 256-2 = 254 = 1111 1110。
。。。
求补码,并不需要借助于原码和反码。
公式就是:周期 + 负数。
在计算机中,利用补码,可以简化算法。
因此,就可以简化计算机的硬件。
-------------------------
例如,用补码计算: 3 + (-1) = 2。
    0000 0011  (= 3)
  + 1111 1111  (-1 的补码=255)
---------------------
  (1) 0000 0010  (= 2)
舍弃进位,只取八位,结果就完全正确。
-------------------------
补码,就是补码。
补码和原码反码,并没有任何关系。
取反加一、符号位不变 ... ,这些,并没有任何理论依据。
运用:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理。
计算
1、正数
正整数的补码是其二进制表示,与原码相同。
例如:+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)
2、负数
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
例如:求-5的补码。-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)。所以-5的补码是11111011。
3、0的补码
[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000
扩展资料
补码乘法
补码的乘法不具备【X*Y】补=【X】补×【Y】补的性质。但是【X*Y】补==【X】补×Y,所得结果再取补码,如x=101,y=011,[x*y]补=-[(-101)*011]=-[011*011]=-01001=10111。
其中,若【Y】补=y31y30??y0,则 Y=-y31*2^31+y30*2^30+??+y0*2^0
原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
参考资料来源:百度百科-补码
参考资料来源:百度百科-原码

网站数据信息

"定点补码运算,定点数的加减乘除"浏览人数已经达到21次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:定点补码运算,定点数的加减乘除的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!