百度
360搜索
搜狗搜索

已知负数的补码求原码,负数补码怎样求原码?详细介绍

本文目录一览: 负数补码怎样求原码?

以补码10010110为例,有两种计算方法求原码:
算法1:
补码=原码取反再加1的逆运算。
10010110是补码,应先减去1变为反码,得10010101;
由反码取得源码即除符号位外其他为按位取反,得11101010,即十进制数的-106。
算法2:
负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算
10010110是补码,符号位与最后一个1之间的所有数字按位取反,得11101010
扩展资料
计算机系统中的补码和原码:
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。原码不能直接参加运算,可能会出错。
例如数学上,1+(-1)=0,而在二进制中00000001+10000001=10000010,换算成十进制为-2。显然出错了。
参考资料:百度百科-补码

已知一个数的补码,如何求原码?

已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为 “1”;其余7位1111001取反后为0000110;再加1,所以是10000111。
扩展资料:
总结:
已知一个数的补码,求原码的操作其实就是对该补码再求补码。
补码转换为原码:符号位不变,数值位按位取反,末位再加1。即补码的补码等于原码。
正整数的原码、反码和补码是一样的,即看到符号位(第一位)是0,就可以照着写出其他两种码。所以已知正数的补码,求其原码,两个数是一样的。
参考资料:百度百科——补码

由补码求原码如何求

已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,源求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为 “1”;其余7位1111001取反后为0000110;再加1,所以是10000111。
扩展资料:
和原码、反码等相比可表现在如下方面:
(1)解决了符号的表示的问题;
(2)可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计;
(3)在计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易;

怎么求补码的原码?

已知一个数的补码,求原码的操作其实就是对该补码再求补码:
1、如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
2、如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
例如:已知一个补码为11111001,则原码是10000111(-7)。因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;再加1,所以是10000111。
扩展资料:数的表示:
在数的表示上通过人为的定义来消除编码映射的不唯一性,对转换后的10000000强制认定为-128。当然对原码和反码也可以做这种强制认定,那为什么原码和反码没有流行起来?原码和反码没有流行起来,是因为在数的运算上对符号位的处理无法用当时已有的机器物理设计来实现。
由于原码和反码在编码时采用了硬性的人工设计,这种设计在数理上无法自动的通过模来实现对符号位的自动处理,符号位必须人工处理,必须对机器加入新的物理部件来专门处理符号位,这加大了机器设计难度,加大的机器成本,不到万不得已,不走这条路。
参考资料:百度百科--补码

如何用负数的补码来求原码,求例子

用8086汇编语言,负数的补码来求原码,例子如下:
NEG AX
ADD AX, 32768
END
求反加一。
首先,负数的补码=其正数的源码的反码+1。然后,负数的源码就是先减1在取反,最高位为1
eg:(-125)源=11111101b,
(-125)反=10000010b,
(-125)补=10000011b,反过来求-125的源码就是用-125的补码10000011先减1,得到10000010,在取反01111101,最高位改成1,11111101,懂了吗?祝考试周愉快~

已知一个数的补码,求其原码的操作是:

[X]原 =11110010。
补码转化原码的方法:
已知一个数的补码,求原码的操作其实就是对该补码再求补码:如果补码的符号位为“0”,表示是一个正数,其原码就是补码。如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
题目中,[X]补=10001101,该补码的符号为“1”,是一个负数,表示是一个负数,所以该位不变,仍为“1”。其余七位0001101取反后为1110010;再加1,所以是11110010。
扩展资料:
正整数的补码是其二进制表示,与原码相同 。
例:+9的补码是00001001。
这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。
负数求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。

补码-5的原码是多少??要过程

这之前,遇到什么原码,反码,补码,就头疼,其实遇到一个自己怕的问题,就一定要解决它,吃掉它,这样心里的心结就解决了,不然等到以后,每次遇到都是跳过,跳过,难受香菇。

首先提几个概念: 原码,反码,补码 
    原码是什么?
      原码就是早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码
      举例说明:
      int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得:
     
      int类型的 -3 的绝对值的二进制位就是上面的 11B 展开后高位补零就得:
        
      但是原码有几个缺点,零分两种 +0 和 -0 。很奇怪是吧!还有,在进行不同符号的加法运算或者同符号的减法运算的时候,不能直接判断出结果的正负。你需要将两个值的绝对值进行比较,然后进行加减操作 ,最后符号位由绝对值大的决定。于是反码就产生了。
    
    反码是什么 ?
      正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反
      举例说明:
      int类型的 3 的反码是
     
      和原码一样没什么可说的
      int类型的 -3 的反码是
     
      除开符号位 所有位 取反
      解决了加减运算的问题,但还是有正负零之分,然后就到补码了
    
    补码是什么?
      正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1.
      还是举例说明:
      int类型的 3 的补码是:
     
      int类型的 -3 的补码是
      
      就是其反码加1
最后总结一下:
    正数的反码和补码都与原码相同。
    负数的反码为对该数的原码除符号位外各位取反。
    负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1  
    
各自的优缺点:
    原码最好理解了,但是加减法不够方便,还有两个零。。
    反码稍微困难一些,解决了加减法的问题,但还是有有个零
    补码理解困难,其他就没什么缺点了
喔日,说到这里,估计都晕了,举个栗子把。
5的原码是 (四个字节,32位(byte))
5的原码和反码,补码都一样。
-5的原码是原码除符号位以外所有的位取反 ,
-5的反码就是原码符合外取反得到反码
-5的补码就是反码加一得到补码
最后补充一句,负数一般用补码来计算
以8位二进制数
-5的原码是:
1000 0101
反码是符号位不变,取余按位取反,即:
1111 1010
补码是符号位不变,反码+1,即
1111 1011
因此[-5]补=1111 1011
补码、原码、反码,这些都是计算机专家编造的词汇。
事实上,它们,都不应该存在。
计算机的运算,是很简单的,和这些词汇,并没有任何关系。
--------------------------
你想象一下:
  有一个小朋友,很小的,大概是三岁吧。
  他只会数一百个数(0~99),会加法,还不会做减法。
那么,你可以这样教他:加 99,就是减一。
比如: 25 - 1 = 24
    25 + 99 = (一百) 24
让他只取 2 位数,忽略进位,结果,就是正确的。
--------------------------
上面是一个简单的例子,却说明了一个事实:
  做计算时,限定了位数,正数,就能当做负数使用。
限定了位数,有两个意义:
  数值是循环的,具有周期性;
  有没有进位,都不必考虑。
代替负数的正数,怎么求呢?
你一定能看出来公式: 正数 = 负数 + 周期。
--------------------------
在计算机中,8 位 2 进制,称为一个字节。
计数值范围是:0000 0000~1111 1111。
对应的十进制:0 ~ 255。
计数周期,是:2^8 = 256。
这里,共有 256 个机器数。
较大的128 个,就可以代表负数了:
 -1 补码就是:-1 + 256 = 255 = 1111 1111。
 -2 的补码 = 254 = 1111 1110 (二进制)。
 。。。
 -128 的补码 = 128 = 1000 0000 (二进制)。
较小的 128 个,就代表自身的数值了:0 ~ 127。
--------------------------
减法算式: 5 - 7 = -2, 用 8 位补码计算如下:
      5 = 0000 0101
 -7 的补码 = 1111 1001
--相加---------------
  得: (0) 1111 1101 = -2 的补码
在这里,用加法代替减法,略去进位,结果,就完全正确。
--------------------------
用正数(补码)代替了负数,减法运算也就没有了。
因此,计算机的硬件,就可以得到简化了。
所以,在计算机系统中,负数,一律采用补码表示和存储。
原码和反码,在计算机中,根本就不能用。
事实上,它们,根本就不存在。
--------------------------
什么是补码? 为什么要用补码?
看完上面的介绍,相信你都有了答案。
那么,原码和反码,就没有任何意义了。
这两种代码,只是用来求补码的过渡而已。
其实,原码和反码,还有“取反加一”,都是“鸡肋”。
浪费不少时间学习这些,却不能理解【补码的意义】。
况且,用“取反加一”求 0 和-128 的补码,就是难事。
 -128,它没有原码和反码,拿什么取反加一?
 -0 的补码,求出来是 0000 0000。
   符号位,居然是 0 !
   难道,负零,是正数吗?
 有人说,零,不分正负,所有只有一个补码。
   那么,原码反码中,为什么有两个零?
--------------------------
其实,原码反码符号位取反加一,就是一大篇自相矛盾的谬论。
小学生都能弄懂的事,他们竟然弄出这许多骚操作!
老外数学不好,由此可见一斑。
以8位二进制数
-5的原码是:1000 0101
反码是符号位不变,取余按位取反,即:1111 1010
补码是符号位不变,反码+1,即:1111 1011
因此[-5]补=1111 1011
例如:
用二进制把原码表示出来
正数的补码与原码相同
负数的补码,为它的原码除符号位外对各位“按位求反”,在最低位加1即可
+5=00000101(原码) --- 00000101(补码)
-5=10000101(原码) --- 11111011(补码)
+8=00001000(原码) --- 00001000(补码)
扩展资料:
负数
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
例:求-5的补码。
-5对应负数5(10000101)→所有位取反(11111010)→加00000001(11111011)
所以-5的补码是11111011。
参考资料来源:百度百科-补码

阅读更多 >>>  补码运算规则溢出(补码溢出是什么意思)

怎样由负数的补码转换为正数?

由原码转换到补码,取反加一,在大部分场合,是可行的。
但是,-128 没有原码,用取反加一来求补码,就不行了。
同样,由补码求原码,也有-128 的难处。
怎么办呢?
原码反码取反加一,必须抛弃了。
-------------------------
通用的公式:负数 X 的补码 = 2^n - | X |
负数 X 的绝对值 | X |,当然就是正数了。
就是“由负数相反的数”来算出“负数的补码”。
其实,这是很简单的! 减一取反,即可。
比如: |-128 | = 1000 0000(二进制)。
减一,得:0111 1111。
取反,即:1000 1111,这就是 [-128]补!
又如: |-9 | = 0000 1001(二进制)。
减一,得:0000 1000。
取反,即:1111 0111,这就是 [-9 ]补!
--------------------------
“减一取反”,这方法,百试百灵的。
完全不需要使用“原码反码”这些不完善的码制。
而且,由已知的“负数补码”转换为“正数补码”,也可以用这个方法。

c语言、是已知一个负数的补码然后求原码

对补码求补就原码
故原码:
-((2^16-1)-a+1)
其中2^16-1是二进制数:1111 1111 1111 1111
减a后就是将a全部按位取反(包括最高位)
+1后还得把最高位换为1(在计算机内部为换为1),咱们表示的时候就是取其负值,故前面加一个‘-’
计算机中的运算,都是针对补码的。
运算结果,也是补码。
然后求原码?
求原码干嘛? 毫无意义。
用高级语言编程,你只需关心“你的数值”就行了。
至于这个“数值”的补码,是什么?
原码又是什么?
你用高级语言编程,你就不必关心了。
【a】补=1111 1111 1111 1101,说明a是复数
2^16-(a的补码)得到的是-a,由于a为负数,-a则为正数
【补码的优点就是两个相反数相加得到0,如-1:1111 1111 1111 1111; 1: 0000 0000 0000 0001,无非是有一个进位而已,故用的2^16】
a=-[2^16-(a的补码)] 得到数的真值【就是原来的大小,不包括符号位】
2^16 就是1 0000 0000 0000 0000,即上面所讲的进位位

网站数据信息

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