补码运算题,用补码进行下列运算,已知x=110010b,y=100111b,求x+y,x:y
补码运算题,用补码进行下列运算,已知x=110010b,y=100111b,求x+y,x:y详细介绍
本文目录一览: 计算机组成原理,定点运算问题,补码运算。老是不会,求详解
这一步是由上一步再通过补码转换成原码得来的。补码-原码:符号位不变,减一,取反,再把符号位变成符号,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 的补码。
用补码运算方法求x+y=?x-y=? (1) x= 0.1001 y= 0.1100 (2) x= -0.0100 y= 0.1001
(1)取补:[x]补=00.1001 [y]补=00.1100 [-y]补=[[y]补]变补=11.0100 [x+y]补=[x]补+[y]补=01.0101符号位为01,结果正溢 [x-y]补=[x]补+[-y]补=11.1101 x-y=[[x-y]补]补=11.0011=-0.0011(2)取补:[x]补=11.1100 [y]补=00.1001 [-y]补=[[y]补]变补=11.0111 [x+y]补=[x]补+[y]补=00.0101 x+y=[[x+y]补]补=0.0101 [x-y]补=[x]补+[-y]补=11.0011 x-y=[[x-y]补]补=11.1101=-0.1101
【x+y】补 = 【x】补 + 【y】补
【x-y】补 = 【x】补 + 【-y】补
=====================
求【-y】补的方法:①求出【y】补 ② 第一步求到的数,连同符号位全部“求反”。③ 最后末尾加1
例:y=0.1001
①【y】补 = 0.1001 //正数的补码,还是正数
② 1.0110
③ 1.0111
所以【-y】补 = 1.0111
====================
上题:x+y:
(1)【x】补 = 0.1001 //正数的补码等于正数
【y】补 = 0.1100
0.1001+0.1100 = 1.0101
模4补码表示 00.1001 + 00.1100 = 01.0101 // 01表示两个正数之和大于或等于1的情况,称为数值的“上溢”
(2)【x】补= 1.0100数值位取反等于1.1011 末尾加1等于 1.1100 //真值为负数时,求补码的方法是,符号位保持不变,数值位取反后末尾加1
【y】补 = 0.1001
1.1100+0.1001 = (溢出了)用模4补码表示为 10.0101 // 10表示溢出,但是最高位为1表示为负数,10表示为小于或等于-1的情况,称为“下溢”
===========================
上题:x-y
(1)这个比较简单,自己根据我写的方法算算
(2)【x-y】补 = 【x】补 + 【-y】补
【x】补= 1.1100 // 负数求补,符号位保持不变,真值位取反后,末尾加1
【y】补 = 0.1001
【-y】补 = 1.0110 + 1 = 1.0111
1.1100 + 1.0111 = 11.0011
补码计算 题目为1111b-1010b写清计算过程和思路谢了
直接计算:1111b-1010b=0101b
补码计算:
1111b-1010b
=1111b+(1010b)补码
=1111b+(0101b+0001b)
=1111b+0110b
=0101b(注:舍去进位1)
补码的基本运算
补码相加后的结果:1010 1100 是答案的补码,要转化成原码,才是最终答案.
补码转原码方法同原码转补码,即符号位不变,其余按位取反后+1
1010 1100
求反:1101 0011
求补:1101 0100
即:-84
这里用到了补码的运算规则:[X+Y]补=[X]补+[Y]补
求出[X]补+[Y]补后还要求一次补,才能得到答案X+Y
扩展资料:
补码运算原理: 在计算机里,如果我们要计算5-3的值,我们既可以用5减去3,也可以用5加上13。
这就像我们的钟表,它从1点走到12点之后,又回到了1点。我们的计算机也是,从0走到15之后,再往下走就又回到了0,就像我们转了一个圈一样。我们从5这个位置往回退3个格,就完成了5-3这个计算。
我们也可以从5这个位置往前走,一直走到15,这时我们走了10个格,然后我们继续往前走,走到0,然后到1,然后就走到了2。这样,我们往前走了13个格之后,也到了2这个位置。
所以说,在我们这个计算机中,减3和加13是一样的。而3+13=16,我们说在模16的系统下,3和13是互补的。
这样,我们计算5-3就可以换成5+13。3的二进制表示为0011,5的二进制表示为0101。这样,0101-0011就可以表示为0101+(-0011)。
我们在计算机中都是把负数用其补码表示,-0011的补码就是10000-0011(即16-3,也就是13)。10000-0011=1+1111-0011=1+(1111-0011)=1+1100=1101。
我们总说补码是“按位取反再加一”,看了上面这个式子相信大家就会明白了,其实就是把10000-0011换成了1111-0011再加1的形式。
然后,0101-0011就换成了0101+1101,它们计算出来的结果为10010。由于我们的计算机只有四个bit,所以结果为0010。即,在模16的计算机中,5-3=5+13=2。
参考资料:补码_百度百科
在计算机中,负数或减法,都要借助于补码,再用加法来完成的。
得到的结果,也是补码。
[-54]补 = 1100 1010
[-30]补 = 1110 0010
---相加---------
(1) 1010 1100 = [-84]补
计算的结果,是-84,以补码表示。
这不是很简单的哪!
任何讲补码的书中,都有这样的例题。
楼主看看书去吧。
别拿网友当丫环,随便来使唤。
[-54-30]补 = [-54]补 + [-30]补。-54的补码:因为是负数,所以符号位为1,54=32+16+4+2=0110110(2),取反=1001001,加1=1001010,
所以-54的补码是1 1001010.同理,30=16+8+4+2=0011110(2),取反=1100001,加1=1100010,-30的补码是1 1100010.[-54-30]补=1 1001010 + 1 1100010 = 1 0101100
根据补码的补码是原码:[[-54-30]补]补=原码。符号位为1,说明为负数,0101100取反=1010011,加1=1010100,转化为10进制得84,故结果为-84。
补码的表示方法是:
正数的补码就是其本身
如+9的补码是00001001。
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值。
扩展资料
正整数的补码是其二进制表示,与原码相同 。
例:+9的补码是00001001。
求负整数的补码,将其对应正数二进制表示所有位(包括符号位)取反(0变1,1变0,符号位为1不变)后加1 。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
例:求-5的补码。
-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)
所以-5的补码是11111011。
参考资料来源:百度百科——补码
用补码进行下列运算,已知x=110010b,y=100111b,求x+y,x:y
第一题:x+y真值十进制为-19 X+Y原码为10010011,反码为11101100,补码为11101101(负数的反码符号位不变其余各位取反,补码在其反码上加1) 第二题:x+y=35 X+Y的原码,反码,补码均为00100011(正数补码反码原码均一样) 所有码均为8位,其中第一位为符号位
举一个计算机补码计算的例子,以及怎么计算
在计算机系统中,数值,一律采用补码表示和存储。
补码,实际上,是一个“代替负数”的正数。
比如,两位十进制数的计算:
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),其余位表示数值的大小。
参考资料来源:百度百科-补码
参考资料来源:百度百科-原码
一个补码计算题
由于都可以转换为补码的加法运算,这里采用如下的判断溢出的方法:
两个符号位相同的补码相加,如果和的符号位与加数的符号相反,则表明运算结果溢出;
两个符号位不同的补码相加,运算结果不会溢出;
1) (X+Y)补=X补+Y补= 1,111 0111
+ 1,101 0111
=1,100 1110 并没有发生溢出
(X-Y)补=X补+(-Y)补= 1,111 0111
+ 0,010 1001
=0,010 0000 符号位不同不会发生溢出
2)(X+Y)补=X补+Y补=0,011 0111
+ 1,100 0111
=1,111,1110 符号位不同不会发生溢出
2)(X-Y)补=X补+(-Y)补=0,011 0111
+ 0,011 1001
=0,111 0000 并没有发生溢出
求解答!!! 二进制补码中的计算问题
8 位机、16 位机、32、64...。
计算机的位数,是固定的。
你的题目,如果按照 4 位机来运算,结果就是 0000。
多出来的位,就不要了。
+1 的四位补码是:0001。
-1 的四位补码是:1111。
两者相加,仍然还是四位的补码:0000。
多出来的进位,不在四位之内,不必考虑。
1、正数的补码表示:
正数的补码 = 原码
负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or
= {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+97和-97为例:
+97原码 = 0110_0001b
+97补码 = 0110_0001b
-97原码 = 1110_0001b
-97补码 = 1001_1111b
2、纯小数的原码:
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的方法。
以0.64为例,通过查阅可知其原码为0.1010_0011_1101_0111b。
操作方法:
将0.64 * 2^n 得到X,其中n为预保留的小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的整数部分。
此处将n取16,得
X = 41943d = 1010_0011_1101_0111b
即0.64的二进制表示在左移了16位后为1010_0011_1101_0111b,因此可以认为0.64d = 0.1010_0011_1101_0111b 与查询结果一致。
再实验n取12,得
X = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小数之后的位数情况下,计算结果相同。
3、纯小数的补码:
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.64为例,其原码为1.1010_0011_1101_0111b
则补码为:1.0101_1100_0010_1001b
当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。
4、一般带小数的补码
一般来说这种情况下先转为整数运算比较方便
-97.64为例,经查询其原码为1110_0001.1010_0011_1101_0111b
笔算过程:
-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小数点在右数第16位,与查询结果一致。
则其补码为1001_1110_0101_1100_0010_1001b,在此采用 负数的补码 = {原码符号位不变} + {数值位按位取反后+1} 方法
5、补码得到原码:
方法:符号位不动,幅度值取反+1 or符号位不动,幅度值-1取反
-97.64补码 = 1001_1110(.)0101_1100_0010_1001b
取反 = 1110_0001(.)1010_0011_1101_0110b
+1 = 1110_0001(.)1010_0011_1101_0111b 与查询结果一致
6、补码的拓展:
在运算时必要时要对二进制补码进行数位拓展,此时应将符号位向前拓展。
-5补码 = 4'b1011 = 6'b11_1011
ps.原码的拓展是将符号位提到最前面,然后在拓展位上部0.
-5原码 = 4‘b’1101 = 6'b10_0101,对其求补码得6'b11_1011,与上文一致。
设机器字长为8位(含1位符号位),用补码运算规则计算下列各题
(1)A=9/64=(0.001 0010)2
B= -13/32=(-0.011 0100)2
[A]补=0.001 0010
[B]补=1.100 1100
[A+B]补= 0. 0 0 1 0 0 1 0 + 1. 1 0 0 1 1 0 0 1. 1 0 1 1 1 1 0 ——无溢出
A+B=( -0.010 0010)2 = -17/64
A= -3/16=(-0.001 1000)2
B=9/32=(0.010 0100)2
[A]补=1.110 1000
[B]补= 0.010 0100
[A+B]补= 1. 1 1 0 1 0 0 0 + 0. 0 1 0 0 1 0 0 0. 0 0 0 1 1 0 0 —— 无溢出
A+B=(0.000 1100)2 = 3/32