补码怎么算例题,补码如何运算
补码怎么算例题,补码如何运算详细介绍
本文目录一览: 补码怎么算?举例说明.
补码怎么算?举例说明。
在计算机系统中,数值,一律采用补码表示和存储。
数值与八位补码,对应关系如下:
求-9 的八位补码,方法步骤如下。
先减一:9-1 = 8 = 0000 1000 (二进制)。
再取反:1111 0111。
完事。
+62原码01000001,反码和补码与原码相同
-62原码11000001:
反码10111110
补码10111111
例如:
+64 原码=反码=补码=0100 0000。
-10 原码=1000 1010;
-10 反码=1111 0101;
-10 补码=1111 0110。
以补码相加,得:0011 0110,这是+54 的补码。
扩展资料:
假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨2小时,即8-2=6;另一种是顺拨10小时,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。
若用一般公式可表示为:a-b=a-b+mod=a+mod-b。对“模”而言,2和10互为补数。实际上,以12为模的系统中,11和1,8和4,9和3,7和5,6和6都有这个特性,共同的特点是两者相加等于模。
参考资料来源:百度百科-补码
举一个计算机补码计算的例子,以及怎么计算
在计算机系统中,数值,一律采用补码表示和存储。
补码,实际上,是一个“代替负数”的正数。
比如,两位十进制数的计算:
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),其余位表示数值的大小。
参考资料来源:百度百科-补码
参考资料来源:百度百科-原码
补码的补码怎么求?
在进行补码加减运算时,常采用双符号表示,即正数符号用00,负数符号用11表示.
已知X=+24D=000011000B,Y=-64D=111000000B,则[X]补=000011000B,[Y]补=111000000B,
因为[-Y]补是将[Y]补所有位变反末位加1得到的,所以[-Y]补=001000000B
[X-Y]补=[X]补+[-Y]补=000011000B+001000000B=001011000B
已知:X =+24D,Y =-64D。
求: [X-Y]补 = ?
解:
[X-Y]补
= [+24-(-64)]补
= [24+64]补
= [88]补 = 0101 1000。
已知: X = +24D,Y =-64D,-Y = 64D。
求:[X-Y]补 = ?
解:按照字长八位处理。
[X]补 = 0001 1000
[-Y]补 = 0100 0000
--相加-----------
得: 0101 1000 = [X-Y]补 = +88D
求给定数值的补码表示分以下两种情况:
(1)正数的补码
与原码相同。
【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)
(2)负数的补码
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。
【例2】求-7的补码。
因为给定数是负数,则符号位为“1”。
后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001)
所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
(2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
再举一个例子:求-64的补码
+64:01000000
11000000
【例3】已知一个补码为11111001,则原码是10000111(-7)。
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;
再加1,所以是10000111。
在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模”
的概念:
“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范
围,即都存在一个“模”。例如:
时钟的计量范围是0~11,模=12。
表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。
“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的
余数。任何有模的计量器,均可化减法为加法运算。
例如:
假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:
一种是倒拨4小时,即:10-4=6
另一种是顺拨8小时:10+8=12+6=6
在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。
对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特
性。共同的特点是两者相加等于模。
对于计算机,其概念和方法完全一样。n位计算机,设n=8,
所能表示的最大数是11111111,若再
加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的
模为2^8。
在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以
了。把补数用到计算机对数的处理上,就是补码。
另外两个概念
一的补码(one's
complement)
指的是正数=原码,负数=反码
而二的补码(two's
complement)
指的就是通常所指的补码。
小数补码求法:一种简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边按位取反。
(3).补码的绝对值(称为真值)
【例4】-65的补码是10111111
若直接将10111111转换成十进制,发现结果并不是-65,而是191。
事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。
若要得到一个负二进制数的绝对值(称为真值),只要各位(包括符号位)取反,再加1,就得到真值。
如:二进制值:10111111(-65的补码)
各位取反:01000000
加1:01000001(+65的补码)
编辑本段代数加减运算
1、补码加法
[X+Y]补
=
[X]补
+
[Y]补
【例5】X=+0110011,Y=-0101001,求[X+Y]补
[X]补=00110011
[Y]补=11010111
[X+Y]补
=
[X]补
+
[Y]补
=
00110011+11010111=00001010
注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是
100001010,而是00001010。
2、补码减法
[X-Y]补
=
[X]补
-
[Y]补
=
[X]补
+
[-Y]补
其中[-Y]补称为负补,求负补的方法是:负数的绝对值的原码所有位按位取反;然后整个数加1。
(恢复本来解释。请路人真正理解并实际验证后再修改。以免误导大众。另外,例6不具典型性,新增例7。)
【例6】1+(-1)
[十进制]
1的原码00000001
转换成补码:00000001
-1的原码10000001
转换成补码:11111111
1+(-1)=0
00000001+11111111=00000000
00000000转换成十进制为0
0=0所以运算正确。
【例7增】-7-(-10)
[十进制]
-7的补码:11111001
-10的补码:11110110
-(-10):按位取反再加1实际上就是其负值的补码,为00001010
-7
-
(-10)=
-7
+
10
=
3
11111001+00001010
=
00000011
转换成十进制为3
3、补码乘法
设被乘数【X】补=X0.X1X2……Xn-1,乘数【Y】补=Y0.Y1Y2……Yn-1,
【X*Y】补=【X】补×【Y】补,即乘数(被乘数)相乘的补码等于补码的相乘。
编辑本段补码的代数解释
任何一个数都可以表示为-a=2^(n-1)-2^(n-1)-a;
这个假设a为正数,那么-a就是负数。而根据二进制转十进制数的方法,我们可以把a表示为:a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2),第(n-1)位为符号位不计算在内。
这里k0,k1,k2,k(n-2)是1或者0,而且这里设a的二进制位数为n位,即其模为2^(n-1),而2^(n-1)其二项展开是:1+2^0+2^1+2^2+……+2^(n-2),而式子:-a=2^(n-1)-2^(n-1)-a中,2^(n-1)-a代入a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)和2^(n-1)=1+2^0+2^1+2^2+……+2^(n-2)两式,2^(n-1)-a=(1-k(n-2))*2^(n-2)+(1-k(n-3))*2^(n-3)+……+(1-k2)*2^2+(1-k1)*2^1+(1-k0)*2^0+1,而这步转化正是取反再加1的规则的代数原理所在。因为这里k0,k1,k2,k3……不是0就是1,所以1-k0,1-k1,1-k2的运算就是二进制下的取反,而为什么要加1,追溯起来就是2^(n-1)的二项展开式最后还有一项1的缘故。而-a=2^(n-1)-2^(n-1)-a中,还有-2^(n-1)这项未解释,这项就是补码里首位的1,首位1在转化为十进制时要乘上2^(n-1),这正是n位二进制的模。
不能贴公式,所以看起来很麻烦,如果写成代数式子看起来是很方便的。
注:n位二进制,最高位为符号位,因此表示的数值范围-2^(n-1)
--2^(n-1)
-1,所以模为2^(n-1)。上面提到的8位二进制模为2^8是因为最高位非符号位,表示的数值范围为0--2^8-1。
补码的补码怎么求?
正数的补码,是其本身。
负数的补码,就用它的正数,减一取反,即可得到补码。
如,已知:+9 补码是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗?
简不简单?意不意外?
原码反码符号位,讨论这些垃圾干嘛?
不都是骗人的吗?
补码的基本运算
补码相加后的结果: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。
参考资料来源:百度百科——补码
负数的补码如何计算?举个例子!
正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码
-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1
移码:00101 //原数+10000
正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
如:+9 的二进制是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗!
简不简单? 意不意外?
原码反码符号位,讨论这些垃圾干嘛?
这些垃圾,只是那些人用来骗吃骗喝的!
在计算机系统中,数值,一律采用补码表示和存储。
在计算机中,原码和反码,都是不存在的。
所以,求补码,也不必使用它们。
补码,是由一系列二进制码组成的。
实用的有 8 位或 16 位。高档的还有 32、64 位。
补码中的每一位,都对应一位十进制数。
要注意:最高位所对应的数值,是负数。
那么,八位的补码,各个位的数值,就是:
-128、64、32、16、8、4、2、1。
--------------------
如果,有一个补码是:1011 1001。
它代表的数值,就是:-128 + 32 + 16 + 8 + 1 = -71。
倘若首位是 0,即为:0011 1001。
求数值,就更简单了:32 + 16 + 8 + 1 = +57。
--------------------
掌握了上述规律,由数值,再求补码,也就很简单了。
例如,求-125 的八位补码。
这是负数,首位一定是 1,代表了数值-128。
与-125 相比较,还应该有个 3。
用七位数值位表示 3,就是:000 0011。
综合在一起,-125 的补码,就是:1000 0011。
--------------------
求补码、求数值,都是很简单的事。
并不需要拐到“原码反码取反加一符号位不变”去。
老外数学不好,脑子不好用,才会弄出哪些个骚操作!
负数的补码应该是反码加1,比如说-1的补码应该是
-0000 0001 取反得到-1111 1110 然后再加1得到-1111 1111 即为它的补码.
正数的补码就是它本身,负数的:补码是它对应的正数按位取反再加一
就比如-9补码是11110111。
9的源码为00001001,如果是负数的话,补码为最高位置1,其余取反也就是11110110,然后在最低位加1即可即11110111。
计算机中的负数是以其补码形式存在的补码=原码取反+1。
一个字节有8位可以表示的数值范围在-128到+127。用二进制表示也就是10000000-01111111(注意:最高位表示符号)。最高位是1的都是负数最高位是0的都是正数。
扩展资料:
补码乘法
补码的乘法不具备【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
原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
二进制的补码怎么算?
二进制的补码怎么算?, 二进制的补码问题 -85负就是1,然后计算正85:+85的原码(1010101)→按位取反(0101010)→加1(0101011) 10101011(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 【例2】求-7的补码。 因为给定数是负数,则符号位为“1”。 后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001) 所以-7的补码是11111001。
-108的16个二进制的补码 你问的是-108的16位二进制的补码吧 !
正的108的原码为 0000 0000 0110 1100 负的108的原码为1000 0000 0110 1100 反码 为 1111 1111 1001 0011 补码 为 1111 1111 1001 0100,即FF94 h
负78的八位二进制的补码 x = -78d = -100 1110b [x]原 =1100 1110b [x]反 =1011 0001b [x]补 =1011 0010b
求助!用4位二进制的补码算5-6怎么算啊? 类似于十进制 不够的从前一位借1 不过 0借1了以后前一位只剩1了 就像十进制 借一之后只剩9一样 然后做减法 . 0101 - 0110 = 1111 (-1的补码)
负数的二进制是怎么算的?其绝对值二进制的补码? 绝对值求反加一 -100原码:1000 0000 0110 0100 -100反码:1111 1111 1001 1011 -100补码:1111 1111 1001 1100=1111 1111 1001 1011(反码) +1
-10100二进制的补码是什么啊 若字长8位,则: [-10100]原 =1001 0100 [-10100]反 =1110 1011 [-10100]补 =1110 1100
二进制的余码,反码,补码怎么算 举例说明如下: 真值X = -11111 , 若字长8位,则: [X]原 =10011111 , 最高位是符号位,1表示负数 [X]反 =11100000 , 将原码除符号位之外的数值位取反得反码 [X]补 =11100001 ,将反码末位加1得补码 若真值是正数,无须上述操作,正数的原码反码补码符号位为0,数值与真值相同 例如,真值 y = +100011 , 8位字长,[y]原 =[Y]反 =[Y]补 =00010011 最高位(符号位)为0表示正数,其右侧二个0用于补齐8位字长
数字10怎么转化为二进制的补码 真值+10d =+1010b ( d是十进制数后缀 , b是二进制数后缀 ) 若用8位字长的机器数表示 [+10d]原 =[+10d]反 =[+10d]补 =00001010b 最高位是符号位,0表示正数,符号位右侧的3个0用于补齐8位 正数的原码、反码、补码,是相同的
二进制101011的补码和二进制-1110111补码之和 x =101011b, y= -1110111b 约定8位字长 ..[y]原 =1111 0111b ..[y]反 =1000 1000b . ..[y]补 =1000 1001b ..[x]补 =0010 1011b (+ -------------------------- [x+y]补=1011 0100b Cs⊕Cp = 0⊕0 = 0 ,无溢出 (Cs是符号位的进位,Cp是最高数值位的进位,⊕表示异或) [x+y]反=1011 0011b [x+y]原=1100 1100b 结果x+y= -100 1110b = -78d
补码如何运算
补码如何运算?
和普通的二进制数,的计算方法,完全相同。
结果,仍然是补码。
先求出补码,再按照二进制,计算,即可。
先画出源码,然后按位取出反码,然后加1,求出既可,晕,二楼已经说了
取反加1但是符号位(就是二进制的左起第一位)不变
-0.01111-0.00101=????
此题没有溢出!
因为:
-0.01111补码:1.10001
-0.00101补码:1.11011
相加:
1.10001+1.11011=1.01100
1.01100原码:-0.10100
只有当减数与被减数的符号相反,但是结果与减数符号相同时,才产生溢出
算出下列的补码求过程顺便说下负数的补码怎么运算 正46 负78 正112 负51
正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
------
+78 的二进制是:0100 1110。
先减一:0100 1110 - 1 = 0100 1101;
再取反:1011 0010。
所以有:-78 补码 = 1011 0010。
------
+51 的二进制是:0011 0011。
先减一:0011 0011 - 1 = 0011 0010;
再取反:1100 1101。
所以有:-51 补码 = 1100 1101。
------
简不简单? 意不意外?
原码反码符号位,讨论这些垃圾干嘛?
没有用的。
【注】因为题目没有指定字长,我谨以8位字长为例,16位、32位同理,补0就好了.
(1)求+46的补码:
①进制转换:+46的二进制形式为+101110
②转换成原码:10101110
③因为 正数的补码与起原码相同,
所以 +46的补码为:10101110.
(2)求-78的补码
①进制转换:-78的二进制形式为-1001110
②转换成原码:11001110
③因为 负数的补码符号位为1,数值为在原码基础上“取反加1”,
所以 -78的补码为:10110010.
PS:正数的补码与其原码相同,负数的补码在其反码的基础上+1,这个就是负数补码的求解方法.
(为网友解答问题是我的荣幸,但这只是热情,并非义务,我很欢迎追问,但追问者态度倨傲的将不予理会)