怎么求一个负数的原码和补码?

如题所述

补码,来自于:补数。

一般的常识:

  钟表时针,倒拨 3 小时,可以用“正拨 9 小时”来代替。

  同理,分针 倒拨 X 分,可以用 正拨 60-X 代替。

  60 是分针的周期。

十进制数,两位:0~99,周期就是一百

  -1 可以用 +99 代替。

如: 25 - 1 = 24

   25 + 99 = (1) 24

忽略进位 1 百,结果就是相同的。

那么,-1 的补数,就是 99 。

   -2 的补数,就是 98 。

   -X 的补数,就是【 周期 + 该负数 】。

--------

借助于补数,就可以用加法,代替减法运算。

所以,计算机就可以节省硬件了。

--------

八位二进制:0000 0000~1111 1111(0~255)。

周期是 256。

那么,-1 可以用 1111 1111 (+255) 代替。

即:

 -1 的补码,就是 1111 1111 (= 256-1=+255) 。

 -2 的补码,就是 1111 1110 (= 256-2=+254) 。

 。。。

 -X 的补码,就是【 周期 + 该负数 】。

 -128,就可以用 1000 0000 (= 128)代替 。  

正数,不需要变换,直接运算即可。

--------

在计算机中,负数,就是用补码存储、计算的。

原码和反码,毫无用处,它们在计算机中都不存在。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-01
补码的补码就是原码!
带符号数中只有负数的原码反码和补码是不一样的,正数的这些都是一样的,涉及码制转换!
原码求补码是取反加1
补码求原码还是是取反加1(符号位除外)
第2个回答  2022-09-20

在计算机系统中,数值,一律采用补码表示和存储。

在计算机中,原码和反码,都是不存在的。

所以,求补码,也不必使用它们。

 

补码,是由一系列二进制码组成的。

实用的有 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。

--------------------

求补码、求数值,都是很简单的事。

并不需要拐到“原码反码取反加一符号位不变”去。

老外,这些脑子不好用的人,才会弄出哪些个骚操作!

第3个回答  2013-11-29
在c语言中,负数的源码是计算出来的,即先视作一个正数,将这个十进制的正数转换为二进制的数,在最高位补一个1,其余空位补0,得到源码。
一般来说正数的补码是源码本身,负数的补码是他源码除去符号位以外其他各位取反(1变0,0变1)后加1。本回答被网友采纳

负数的原码和补码分别是什么?
以补码10010110为例,有两种计算方法求原码:算法1:补码=原码取反再加1的逆运算。10010110是补码,应先减去1变为反码,得10010101;由反码取得源码即除符号位外其他为按位取反,得11101010,即十进制数的-106。算法2:负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按...

怎么求一个负数的原码和补码?
正数,本身就是补码。负数,就用它的正数,减一取反,即可得到补码。如:+9 的二进制是:0000 1001。下面求-9 补码:先减一:0000 1001 - 1 = 0000 1000;再取反:1111 0111。所以有:-9 补码 = 1111 0111。这不就完了吗!简不简单? 意不意外?原码反码符号位,讨论这些垃圾干嘛?这些...

负数的补码怎么求
1、负数在计算机中以补码的形式存储,正数在计算机中以原码的形式存储。负数如何求补码?分为如下步骤:1、首先求出负数的原码,如-8的原码为 1000 1000,2、通过原码求出它的反码,负数的反码就是 除符号为以外,其余的全部求反,如-8 反码为 1111 0111。2、负数的补码 +1,就是它的补码,如 -...

负数的补码的反码怎么求
要计算负数的补码和反码,首先需要知道该负数的原码。原码是一个有符号整数的二进制表示,其中最高位是符号位(0表示正数,1表示负数),其余位表示整数的绝对值。以下是计算负数的补码和反码的步骤:确定原码:首先,将负数的绝对值转换为二进制表示。如果你有一个十进制负数,可以将其绝对值转换为二进...

负数的原码、反码、补码怎么算?
负数的表达方式为绝对值的原码的补码,而补码是在反码基础上加1。假设是8位,最高位是用来表示符号的,因而正数是不允许占用,为1时表示负数,因此正数的最大值为01111111=127,因此01110011的反码为10001100(各位取反),再加1转换为补码=10001101=8D(HEX)-1的补码是:FF -128的补码是:80 因此8...

负数的补码表示方式是怎样的?
负数的补码表示方式是:负数的补码=该负数的绝对值的原码的反码加1。具体来说,首先得到负数的绝对值的原码,再把最高位变成1,这就是负数的原码。然后对原码按位取反(符号位不变),得到反码。最后在反码的基础上加1,即得到补码。以-5为例,首先得到5的原码:0000 0101,然后将其符号位变成1,...

负数的补码怎么计算?
具体地,对于一个负数a,它的补码可以计算为:补码 = 原码 - 符号位 * 2^n + 数值位 * 2^(n-8)其中,符号位为最高位(用符号位来表示正负号),数值位从最低位开始计算。例如,对于一个-5的数,它的原码为1001(二进制表示为1001),取反得到010(二进制表示为010),再加 1得到 011(...

负数的原码反码补码怎么求
1、原码:正数的原码就是二进制的最高位是0,负数的原码是二进制的最高位是1。2、反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,但符号位除外。3、补码:正数补码与其原码相同,负数的补码是在其反码的末位加1。反码,正数的反码与原码相同,负数的反码则是其绝对值按位求反。即它...

负数的原码怎么求?
【俊狼猎英】团队为您解答~1)首先确定给出的数是负数,因此根据补码运算法则,应该先-1,然后除符号位逐位取反,最终得到的原码是10000110,在十进制下是-6 2)可以直接用二进制进行乘法运算,转化为0111*01000000+0100*01000+0100 =0111000000+0100000+0100 =0111100100 ...

如何得负数的原码
只需对其各位取反加一即可得到原码。从数学角度回答,假定在32位机器上。设某负数X,则X+X(反)= 0xFFFFFFFF。所以X+X(反)+1 = 0,可以得出 0 - X = X(反)+ 1。这里 0 - X即定义为负数X的补码,这样,计算机在进行X-Y运算时实际可用X+Y(补)代替,硬件角度只需实现加法电路即可...

相似回答