两个正数原码补码反码相加怎么弄,是直接用原码相加吗

君,已阅读到文档的结尾了呢~~
根据二进制数的定义,只要将它按权展开再相加。 例如
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
根据二进制数的定义,只要将它按权展开再相加。 例如
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口计算机中使用补码进行减法运算,两个正数相加怎么弄,是直接用原码相加吗?如题,我知道减去一个数等于加上这个数的补数,那么两个正数直接相加呢?不要说补码反码的定义,我都知道…….
千年威武扵
都是一样的,不管是正数负数因为补码就是专门为了解决计算机只能做加法而不能做减法而设计的并且,补码已经考虑了正零和负零这样一个数却有两种表示形式的特殊情况,这是印度人发明的表示方法而且,补码也已经考虑了符号位,符号位也参加到运算中去了.
为您推荐:
其他类似问题
扫描下载二维码当前位置: >
两个浮点数相加,阶码用原码表示,一个数的阶码为7,另一个数的阶码为10,则需要将阶码较小的浮点数的小数点()。
A.左移2位
B.左移3位
C.右移2位
D.右移3位
所属学科:
试题类型:客观题
所属知识点:
试题分数:1.0 分
暂未组卷。
暂无学习笔记。
&&&&&&&&&&&&&&&长沙希赛教育科技有限公司 版权所有 & &&本文所属图书&>&
本书是按照计算机组成原理教学大纲的要求,并参照全国联考大纲编写而成。全书共11章,主要内容包括:计算机系统概论、数据编码和表示、数据的机器运算、主存储器、存储系统、指令系统、中央处理器、指令流水线、...&&
1. 单项选择题
【例3-1-1】补码整数右移一位后的值为&&&&& 。
A. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.
C. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.
解:该数是一个负数,按照算术补码位移规则,负数左移添0,右移添1,所以右移一位后的值为。本题答案为D。
【例3-1-2】补码整数左移2位后的值为&&&&& 。
A. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B.
C. &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D.
解:该数是一个正数,按照算术位移规则,正数左移或右移均添0,所以左移2位后的值为。本题答案为B。
【例3-1-3】设机器字长为8位(含1位符号位),若机器数BAH为原码,则算术左移一位得&&&&& ,算术右移一位得&&&&& 。
A. F4H,EDH&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B. B4H,6DH
C. F4H,9DH&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& D. B5H,EDH
解:原码左、右移均补0,且符号位不变。BAH=()2,算术左移一位得()2=F4H,算术右移一位得()2=9DH。本题答案为C。
【例3-1-4】已知[x/2]补=C6H,计算机的机器字长为8位二进制编码,则[x]补是&&&&& 。
A. 8CH&&&&&&&&&&&&&&&&&&&&&&& B. 18H&&&&&&&&&&&&&&&&& C. E3H&&&&&&&&&&&&&&&& D. F1H
解:[x]补相当于[x/2]补乘以2,即将[x/2]补左移1位,由于C6H=为负数,负数补码左移添0,符号位不变,所以[x]补=CH。本题答案为A。
【例3-1-5】设机器字长为8位(含1位符号位),若机器数DAH为补码,则算术左移一位得&&&&& ,算术右移一位得&&&&& 。
A. B4H,EDH&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B. F4H,6DH
C. B5H,EDH&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. B4H,6DH
解:DAH=()2,表示负数,负数补码左移添0、右移添1,且符号位不变。算术左移一位得()2=B4H,算术右移一位变为()2=EDH。本题答案为A。
【例3-1-6】定点数运算产生溢出的原因是&&&&& 。
A. 参加运算的操作数超出机器数的表示范围
B. 运算结果超出机器数的表示范围
C. 运算过程中最高位产生进位或借位
D. 寄存器位数限制,丢掉低位数值
解:不是参加运算的操作数能否超出机器数的表示范围,而是运算结果超出机器数的表示范围。本题答案为B。
【例3-1-7】计算机内的减法是用&&&&& 来实现的。
A. 将被减数加到减数中&&&&&&&&&&&&&&&&&&&&&&&&& B. 从被减数中减去减数
C. 补数的相加&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 从减数中减去被减数
解:为了方便加减运算,数据在计算机内部采用补码表示,且[A]补-[B]补=[A]补+[-B]补。本题答案为C。
【例3-1-8】计算机内部的定点数大多用补码表示,以下是一些关于补码特点的叙述:
I. 零的表示是唯一的
II. 符号位可以和数值部分一起参加运算
III. 和其真值的对应关系简单、直观
IV. 减法可用加法来实现
在以上叙述中,&&&&& 是补码表示的特点。
A. I和II&&&&&&& &&&&&& B. I和III&&&&&&&&&&&&&&&&&&&& C. I和II和III&&&&&&&&&&&& D. I和II和IV
解:[+0]补和[-0]补是相同的,所以Ⅰ正确。在进行补码定点数的加/减运算时,符号位作为数的一部分参加运算,所以Ⅱ正确。[A]补-[B]补=[A]补+[-B]补,即将减法采用加法实现,所以Ⅳ正确。实际上,补码和其真值的对应关系远不如原码和其真值的对应关系简单直观,所以Ⅲ错误。本题答案为D。
【例3-1-9】补码的加减法是指&&&&& 。
A. 操作数用补码表示,两数相加减,符号位单独处理,减法用加法代替
B. 操作数用补码表示,符号位和数值位一起参加运算,结果的符号与加减相同
C. 操作数用补码表示,连同符号位直接相加减,减某数用加某数负数的补码代替,结果的符号在运算中形成
D. 操作数用补码表示,由数符决定两数的操作,符号位单独处理
解:在补码的加减法中,操作数用补码表示,符号位参与运算,减法转换成加法进行运算,在运算中形成运算结果的符号位。本题答案为C。
【例3-1-10】在补码的加减法中,用两位符号位判断溢出,两位符号位Ss1Ss2=10时,表示&&&&& 。
A. 结果为正数,无溢出&&&&&&&&&&&&&&&&&&&&&&&&& B. 结果正溢出
C. 结果负溢出&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 结果为负数,无溢出
解:Ss1Ss2=10时表示结果负溢出。本题答案为C。
【例3-1-11】在补码的加减法中,用两位符号位判断溢出,两位符号位Ss1Ss2=01时,表示&&&& 。
A. 结果为正数,无溢出&&&&&&&&&&&&&&&&&&&&&&&&& B. 结果正溢出
C. 结果负溢出&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 结果为负数,无溢出
解:Ss1Ss2=01时表示结果正溢出。本题答案为B。
【例3-1-12】若采用双符号位,则发生正溢出的特征是:双符号位为&&&&& 。
A. 00&&&&&&&&&&&&&&&&&&& B. 01&&&&&&&&&&&&&&&&&&&&&&&&&& C. 10&&&&&&&&&&&&&&&&&&&&&&&&&& D. 11
解:只有在进行补码定点数的加/减运算时才采用双符号位来判断结果的符号位和是否溢出,为01时表示正溢出。本题答案为B。
【例3-1-13】在补码加法运算中,&&&&& 时表示数据溢出。
A. 双符号位相同&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&& B. 双符号位不同
C. 两正数相加&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&& D. 两负数相加
解:在补码加法运算中,若采用两位符号法来判断溢出,则当两个符号位不同时表示溢出。本题答案为B。
【例3-1-14】两补码相加,采用1位符号位,则当&&&&& 时,表示结果溢出。
A. 最高位有进位
B. 最高位进位和次高位进位的异或结果为0
C. 最高位为1
D. 最高位进位和次高位进位的异或结果为1
解:这是采用进位判断法来判断是否溢出,其规则是若最高位有进位,且和次高位进位异或结果为1,表示结果溢出,若异或结果为0,表示结果无溢出。本题答案为D。
【例3-1-15】两个不为0的5位二进制的定点小数,经补码加法运算后结果为1.00000,若此结果不表示溢出,则下列推论中正确的是&&&&& 。
A. 两个都为正定点小数,和为1.00000
B. 两个数符号相反,被加数比加数大1.00000
C. 两个都为负定点小数,和为1.00000
D. 两个数符号相反,被加数比加数小1.00000
解:和为1.00000即最小的数,又没有溢出,一定是两个负定点小数相加的结果。本题答案为C。
【例3-1-16】如下C语言程序在一台32位机器上运算:
int x=127,z;
short int y=-9;
程序运行后,x、y和z的值分别是&&&&& 。
A. x=0000007FH,y=FFF9H,z=H
B. x=0000007FH,y=FFF9H,z=FFFF0076H
C. x=0000007FH,y=FFF7H,z=FFFF0076H
D. x=0000007FH,y=FFF7H,z=H
解:int型字长为32位,short型字长为16位,在计算机中均用补码表示,最高一位为符号位,则[x]补=127=(1111111)2=0000007FH,y=-9=-(1001)2=-(00 1001),[y]补=
11 0111=FFF7H。在执行x+y运算时需要将y转换为int型后再相加,即[y]补转换为FFFFFFF7H,所以,[z]补=0000007FH+FFFFFFF7H=H。本题答案为D。
当一个补码从16位扩展为32位时,是指扩展高位部分,符号位不变,正数用0扩充,负数用1扩充,相当于用符号位扩充。
【例3-1-17】下列说法中正确的是&&&&& 。
A. 采用变补进行加减法运算可以避免溢出
B. 只有定点数运算才有可能溢出,浮点数运算不会产生溢出
C. 在定点数补码减法中两个正数相减不会产生溢出
D. 只有将两个正数相加时才有可能产生溢出
解:溢出是指运算结果超出模值(纯整数运算模值为2n+1,纯小数运算模值为2),显然两个正数相减的结果不会超出模值,两个正数相加、两个负数相加都有可能产生溢出。本题答案为C。
【例3-1-18】变补操作的含义是&&&&& 。
A. 将一个数的原码变成补码
B. 将一个数的反码变成补码
C. 将一个数的真值变成补码
D. 已知一个数的补码,求它的相反数的补码
解:变补操作的含义是已知[x]补求[-x]补,求解方法是[-x]补=[[x]补]变补。本题答案为D。
【例3-1-19】如果x为负数,由[x]补求[-x]补是 &&&&&。
A. [x]补各值保持不变
B. [x]补符号位变反,其他各位不变
C. [x]补除符号位外,各位变反,末位加1
D. [x]补连同符号位一起各位变反,末位加1
解:求变补即[-x]补的规则是[x]补连同符号位一起各位变反,末位加1。本题答案为D。
【例3-1-20】原码乘法是&&&&& 。
A. 取操作数的绝对值进行相乘,符号位单独处理
B. 用原码表示操作数,然后直接相乘
C. 被乘数用原码表示,乘数取绝对值,然后相乘
D. 乘数用原码表示,被乘数取绝对值,然后相乘
解:原码一位乘法中,符号位与数值位是分开进行计算的。运算结果的数值部分是乘数与被乘数数值位的乘积,符号是乘数与被乘数符号位的异或。本题答案为A。
【例3-1-21】在原码一位乘法中,&&&&& 。
A. 符号位参加运算
B. 符号位不参加运算
C. 符号位参加运算,并根据运算结果改变结果中的符号位
D. 符号位不参加运算,并根据运算结果确定结果中的符号位
解:在原码一位乘法中,符号位不参加运算,符号位单独处理,同号为正,异号为负。本题答案为B。
【例3-1-22】在采用原码一位乘法计算x&y时,当乘数最低位yi为1时,&&&& &。
A. 被乘数x连同符号位与原部分积相加后,右移一位
B. 被乘数的绝对值|x|与原部分积相加后,右移一位
C. 被乘数x连同符号位右移一位后,再与原部分积相加
D. 被乘数的绝对值|x|右移一位后,再与原部分积相加
解:在原码一位乘法中,符号位与数值位是分开进行计算的。运算结果的数值部分是乘数与被乘数数值位的乘积,符号是乘数与被乘数符号位的异或。数值位相乘时,当乘数最低位yi为1时,将被乘数绝对值|x|与部分积相加后,右移一位。本题答案为B。
【例3-1-23】x、y为定点整数,其格式为1位符号位,n位数值位,若采用补码一位乘法实现乘法运算,则最多需要&&&&& 次加法运算。
A. n-1&&&&&&&&&&&&&&&&& B. n&&&&&&&&&&&&&&&&&&&&&&&&&&&& C. n+1&&&&&&&&&&&&&&&&&&&&&&&& D. n+2
解:Booth乘法共需做n+1次累加和n次移位。本题答案为C。
【例3-1-24】原码加减交替除法又称为不恢复余数法,因此&&&&& 。
A. 不存在恢复余数的操作
B. 当某一步运算不够减时,做恢复余数的操作
C. 仅当最后一步余数为负时,做恢复余数的操作
D. 当某一步余数为负时,做恢复余数的操作
解:在用原码加减交替法做除法运算时,商的符号位是由除数和被除数的符号位异或来决定的,商的数值是由除数、被除数的绝对值通过加减交替运算求得的。由于除数、被除数取的都是绝对值,那么最终的余数当然应是正数。如果最后一步余数为负,应将该余数加上除数,将余数恢复为正数,此时不需要左移了,这就称为恢复余数。本题答案为C。
【例3-1-25】在定点补码除法中,当&&&&& 时商上1。
A. 余数为正&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& B. 余数的符号与除数的符号不同
C. 余数的符号与除数的符号相同&&&&&&&&&&&& D. 余数的符号与被除数的符号相同
解:定点补码除法中,余数的符号与除数的符号相同时商上1。本题答案为C。
【例3-1-26】在定点补码除法运算中,以下叙述正确的是&&&&& 。
A. 符号位和数据位一起参加运算&&&&&&&&&&& B. 符号位不和数据位一起参加运算
C. 符号位单独处理&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 数据位单独处理
解:在定点补码的乘、除法运算中,符号位和数据位都参加运算。本题答案为A。
【例3-1-27】以下关于补码除法的叙述中正确的是&&&&& 。
A. 在补码不恢复除法中,够减商上0,不够减商上1
B. 在补码不恢复除法中,异号相除时,够减商上0,不够减商上1
C. 在补码不恢复除法中,够减商上1,不够减商上0
D. 以上都不对
解:在补码不恢复除法中,异号相除时要看够不够减,够减商上0,不够减商上1。本题答案为B。
【例3-1-28】在定点数运算中,除加法器之外,还必须使用移位器的运算是&&&&& 。
A. 加法&&&&&&&&&&&&&&&&&&&&&& B. 减法&&&&&&&&&&&&&&& C. 乘法&&&&&&&&&&&&&&&&&&&&&& D. 以上都不对
解:在定点数运算中,乘法和除法都需要使用移位器。本题答案为C。
【例3-1-29】算术右移时&&&&& 保持不变。
解:本题答案为:最高位(符号位)。
【例3-1-30】用补码表示的负数,进行算法左移时,空出位补& ①& ,进行算法右移时,空出位补& ②&
解:本题答案为:① 0 ② 1。
【例3-1-31】原码乘除法运算中,符号位与数值位& ①& 计算,两个x、y进行原码乘除法,其运算结果的符号位为& ②& 。
解:本题答案为:① 分开 ② xs&ys。
【例3-1-32】补码乘法运算时需要增加一位& ①& ,其初值为& ②& 。
解:本题答案为:① yn+1 ② 0。
【例3-1-33】在补码一位乘法中,如果判断位ynyn+1=10,则下一步(但不是最后一步)的操作是将部分积加上& ①& ,再向& ②& 移一位。
解:本题答案为:① [-x]补 ② 右。
【例3-1-34】判断以下叙述是否正确。
(1)对于整数,左移1位相当于将原数乘以2,右移1位相当于除以2。
(2)对于二进制数,若小数点左移1位,则数值缩小1倍,若小数点右移2位,则数值扩大2倍。
(3)当定点数运算发生溢出时应进行舍入处理。
(4)任何两个数相加都有可能出现溢出。
(5)两补码数相加,采用1位符号位,当运算结果的符号位为1时表示结果溢出。
(6)原码加减交替除法又称为不恢复余数法,因此在整个除法运算中不存在恢复余数的操作。
解:(1)错误。对于无符号数的原码,左移1位相当于乘以2,右移1位相当于除以2。如果符号位分开单独处理,这一规则也适合于有符号数的原码。
(2)正确。这里是指小数点的左移或右移,而不是数的左移或右移。
(3)错误。定点数运算一旦发生溢出只有产生中断向CPU报错。
(4)错误。两个正数相加或两个负数相加才可能出现溢出,一个正数与一个负数相加不会出现溢出。
(5)错误。两补码数相加,采用1位符号位,当运算过程中符号位进位和最高数位进行异或,其结果为1时表示结果溢出。
(6)错误。在整个除法运算中,仅当最后一步余数为负时做一次恢复余数的操作。
【例3-1-35】证明:[-x]补=[[x]补]变补。
证明:以定点整数为例,当0&x&2n(正整数)时,设[x]补=x=0x1x2&xn(正数的补码与原码相同),则-x=-x1x2&xn,也就是[-x]原=1x1x2&xn,所以[-x]补=1&+1(负数的补码为反码加1),根据变补规则,[[x]补]变补=1&+1(将[x]补连同符号位求反加1),所以[-x]补=[[x]补]变补。
【例3-1-36】假设有两个整数x和y,x=-68,y=-80,采用补码形式(含1位符号位)表示,x和y分别存放在寄存器A和B中。另外,还有两个寄存器C和D。A、B、C、D都是8位的寄存器。请回答下列问题(要求最终用十六进制表示二进制序列):
(1)寄存器A和B中的内容分别是什么?
(2)x和y相加后的结果存放在C寄存器中,寄存器C中的内容是什么?此时溢出标志位OF是什么?符号标志位SF是什么?进位标志位CF是什么?
(3)x和y相减后的结果存放在D寄存器中,寄存器D中的内容是什么?
此时,溢出标志位OF是什么?符号标志位SF是什么?进位标志位CF是什么?
解:(1)x=-68=(-100 0100)2,则[-68]补==BCH;y=-80=-(101 0000)2,则[-80]补==B0H,所以寄存器A和B中的内容分别是BCH、B0H。
(2)[x+y]补=[x]补+[y]补=11 0 1100=6CH,所以寄存器C中的内容是6CH,其真值为108。此时,溢出标志位OF为1,表示溢出,即说明寄存器C中的内容不是真正的结果;符号标志位SF为0,表示结果为正数(溢出标志为1,说明符号标志有错);进位标志位CF为1,仅表示加法器最高位有进位,对运算结果而言,无意义。
(3)[x-y]补=[x]补+[-y]补=01 0 1100=0CH,最高位前面的一位被丢弃(取模运算),结果为12,所以寄存器D中的内容是0CH,其真值为12。此时,溢出标志位OF为0,表示不溢出,即:寄存器D中的内容是真正的结果;符号标志位SF为0,表示结果为正数;进位标志位CF为1,仅表示加法器最高位有进位,对运算结果而言,无意义。
【例3-1-37】已知x和y为定点小数,用双符号位补码运算方法计算x+y的值及运算结果的特征。
(1)x=0.1011,y=0.1100
(2)x=-0.1011,y=0.1001
解:(1)[x]补=0.1011,[y]补=0.1100,采用双符号位补码加法的运算过程如下。
运算结果正溢出。
(2)[x]补=11.0101,[y]补=00.1001,采用双符号位补码加法运的算过程如下。
运算结果没有溢出,[x+y]补=1.1110,x+y=-0.0010。
【例3-1-38】已知x和y,用双符号位补码的运算方法计算x-y的值及运算结果的特征(包括几个标志位的值)。
(1)x=27/32,y=31/32
(2)x=13/16,y=-11/16
解:(1)x=27/32=27&2-5=0.11011,y=31/32=31&2-5=0.11111,则[x]补=0.11011,[y]补=0.11111,[-y]补=1.00001,采用双符号位补码减法的运算过程如下。
[x-y]补=1.11100,则x-y=-0.00100。
(2)x=13/16=13&2-4=0.1101,y=-11/16=-11&2-4=-0.1011,则[x]补=0.1101,[y]补=1.0101,[-y]补=0.1011,采用双符号位补码减法的运算过程如下。
双符号位为01,表示正溢出。
【例3-1-39】已知x和y为定点小数,用进位判断法进行计算。
(1)10/16+9/16
(2)-10/16-9/16
解:(1)x=10/16=1010&2-4=0.1010,y=9/16=1001&2-4=0.1001,则[x]补=0.1010,[y]补=0.1001,采用进位判断法补码加法的运算过程如下。
从中可以看到Cs=0,而C1=1,V=Cs&C1=1,发生溢出。实际上,10/16+9/16=19/16&1,对于定点小数而言,出现溢出现象。
(2)x=-10/16=-1010&2-4=-0.1010,y=9/16=1001&2-4=0.1001,则[x]补=1.0110,[y]补=0.1001,[y]变补=1.1001,采用进位判断法补码减法的运算过程如下。
从中可以看到Cs=1,而C1=0,V=Cs&C1=1,发生溢出。实际上,-10/16-9/16=-19/16&-1,对于定点小数而言,出现溢出现象。
【例3-1-40】已知[x]补=1.1100100,[y]补=1.0100011,计算2[x]补+[y]补/4。
解:x和y均为负数,负数补码左移时添0,右移时添1,则2[x]补=1.1001000(左移一位),[y]补/4=1.1101000(右移两位),采用双符号位补码加法的运算过程如下:
所以,2[x]补+[y]补/4=1.0110000。
【例3-1-41】已知[x]原=0.0111,[y]原=1.1101,试用原码一位乘法求解[x&y]原。
解:|x|=0.0111&B,|y|=0.1101&C,0&A。采用原码一位乘法的求解过程如图3.10所示。求得结果为x&y=-0.。
图3.10& 采用原码一位乘法求x&y的过程
【例3-1-42】已知:被乘数x=+0.10101,乘数y=-0.11011。试用补码一位比较乘法(Booth乘法)规则求[x&y]补,要求写出计算步骤和运算竖式。
解:[x]原=0.10101,[x]补=0.10101,[-x]补=1.01011,[y]原=1.11011,[y]补=1.00101。[x]补=0.10101&B,[y]补=1.00101&C,0&A。采用Booth乘法的计算过程如图3.11所示。求得的结果为[x&y]补= 1.。
图3.11& 采用Booth乘法的计算过程
【例3-1-43】用原码加减交替除法进行4/5运算,要求写出每一步的运算过程及运算结果。
解:取X=&23,Y=&23,x=0.100,y=0.101,本题变为求x/y,假设字长为4(含1位符号位)。
被除数|x|=0.100&A,除数y=0.101&B,[|y|]变补=[-|y|]补=1.011,0&C,求解过程如图3.12所示,求得结果为[x/y]原=+0.110余0.010&2-3,即4/5=[x/y]原=0.110+(0.01&2-3)/0.101。
图3.12& 采用原码加减交替除法求x/y的过程
本题中商(0.110)2=0.75,余数部分计算出来为0.05,最终十进制结果为0.8。
【例3-1-44】用补码加减交替除法进行4/-5的运算,要求写出每一步的运算过程及运算结果。
解:设X=&23,Y=&23,本题变为求x/y,x=0.100,y=1.101,假设字长为5(含2位符号位)。
[x]补=0.100&A,[y]补=1.011&B,[y]变补=[-|y|]补=0.101,0&C,求解过程如图3.13所示,从中看到,x和y两个小数相除的结果为[x/y]补=1.001,余1.101&2-3。也就是说4/-5=x/y=-0.111+(-0.011&2-3)/(-0.101)=-0.111+(0.011&2-3)/0.101。
图3.13& 求[x/y]补的过程
除法运算中,余数应为正数,本题中,商(-0.111)2=-0.875,余数部分计算出来为0.075,最终十进制结果为-0.8。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'c语言中任意大大的整数相加(acm源代码)
//(acm试题1002) 求两个非常大的数的和A + B Problem II(这个非常麻烦) acm上已经通过了
#include &stdio.h&
#include &string.h&
#include &math.h&
void main()
&int i,n,k ,j,h;&
//k作为进位标志位,h作为每位相加的结果,
&int m1,m2;
//作为每一位相加后去掉进位的临时结果(数字字符)
len1,len2,len3;&&
//len1,len2分别为a,b字符串的长度,len3为字符串sum的长度,一直变化
&char a[1001],b[1001],sum[2001];&
//a,b为输入的数,sum为最终结果
&scanf("%d",&n);
&for(j=1;j&=n;j++)
&&scanf("%s",a);
&&scanf("%s",b);
&&len1=strlen(a)-1;
&&len2=strlen(b)-1;
&&while(len1&=0
len2&=0)& //进行整数的相加
&&&m1=a[len1]-'0';
&&&m2=b[len2]-'0';
&&&h=m1+m2+k;
&&&k=h/10;
&&&temp=h+'0';
&&&sum[len3]=
&&&len1--;
&&&len2--;
&&&len3++;
&&if(len1&=0)&&&&//字符串a(整数a)比字符串b(整数b)数字个数多
&&&while(len1&=0)
&&&&m1=a[len1]-'0';
&&&&h=m1+k;
&&&&k=h/10;
&&&&temp=h+'0';
&&&&sum[len3]=
&&&&len1--;
&&&&len3++;
&&if(len2&=0)&&&//字符串a(整数a)比字符串b(整数b)数字个数少
&&&while(len2&=0)
&&&&m2=b[len2]-'0';
&&&&h=m2+k;
&&&&k=h/10;
&&&&temp=h+'0';
&&&&sum[len3]=
&&&&len2--;
&&&&len3++;
&&if(k&0)&&
//最后的进位标志位还得考虑
&&&sum[len3]='1';
&&&len3++;
&&printf("Case
%d:\n",j);&&&//最后进行输出,按要求也不好弄,哈哈
&&printf("%s + %s = ",a,b);
&&for(i=len3-1;i&=0;i--)
&&&printf("%c",sum[i]);
&&printf("\n");
&&if(j!=n)
&&&printf("\n");
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 excel 正数相加 的文章

 

随机推荐