百度
360搜索
搜狗搜索

补码的定义,原码、反码、补码的基本概念详细介绍

本文目录一览: 补码是什么意思?

补码
用[x]表示机器数(原码),x是真值(二进制)
x=+0.1001,则[x]原=0.1001
x=-0.1001,则[x]原=1.1001
对于0,原码中有“+0”、“-0”之分,故有两种形式:
[+0]原=0.000...0
[-0]原=1.000...0
采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。
为了解决这些矛盾,人们找到了补码表示法。机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。
负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便
[x]补=
{
x
1>x≥0
{
2+x=2-|x|
0≥x≥-1
x=+0.1011,则[x]补=0.1011
x=-0.1011,则[x]补=10+x=10.0000-0.1011=1.0101
对于0,[+0]补=[-0]补=0.0000
(mod
2)
例子中是以定点小数为例。
补码的原理可以用钟表来描述
如设标准时间为4点正;一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退
7-4=3
格;一是将时针向前拨12-3=9格。即7-3和7+9(mod12)等价,因此,把负数用补码表示的mod2操作,可以把减法转化为加法。
1
补码
注意:此处的'=='是相等的意思。'='是赋值的意思。
在机器世界里:
正数的最高位是符号位0,负数的最高位是符号位1。
对于正数:反码==补码==原码。
对于负数:反码==除符号位以外的各位取反。
    
补码==反码+1.
    
原码==补码-1后的反码==补码的反码+1。(读完本文后,应该能够直观地认识到本式的正确性)
可以轻易发现如下规律:
自然计算 :a-b==c.
计算机计算:a-b==a+b的补码==d.
c的补码是d.
通过此法,可以把减法运算转换为加法运算。
所以补码的设计目的是:
1.使符号位能与有效值部分一起参加运算,从而简化运算规则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.
钟表分针,你正拨 59 分,就相当于,倒拨 1 分钟。
就是说:
-1,可以用+59 代替;
-2,可以用+58 代替;
-3,可以用+57 代替;
……
59、58、57...,就是-1、-2、-3...的补数。
算法就是:[ X ]补 = 60-| X |, 其中的 60,就是“计数周期”。
----------------------------
在计算机中,一个字节,是 8 位 2 进制数。
其数字是:0~255,都是正数。
其计数周期,就是 2^8 = 256。
它们,怎么表示负数呢?
-1,可以用+255 代替;
-2,可以用+254 代替;
-3,可以用+253 代替;
……
-128,就用+128 代替。
以上的 255~128,就是负数(-1~-128)的补码。
而 0 ~ 127,还是照常代表零和正数。也有人叫补码。
----------------------------
因此,可导出 8 位 2 进制数补码的定义式,如下:
正数和零: [ X ]补 = X,
负数:   [ X ]补 = 256-| X |。
这里的 256=2^8,是 8 位 2 进制的“计数周期”。
看看计算机方面的书吧,肯定能找到这个定义式。
不要迷信“取反加一”了。
取反加一,说明不了“加法代替减法”!
负数,存放在计算机中,就称为:补码。
--------------
时钟的时针,周期是 12 小时。
倒拨 3 小时,也可以用正拨 9 小时来代替。
9,就是-3 的补数。 补数=周期+负数。
分针倒拨 X 分,也可用正拨 60-X 代替。
60,是周期。
--------------
如果使用两位十进制数 0~99,共 100 个数,周期就是一百。
减一,就可以用 +99 代替:
  28 - 1 = 27
  28 + 99 = (1) 27
忽略进位(一百),两种算法的结果,就是相同的。
于是,99,就是-1 的补数;
同理,98,就是-2 的补数;
利用【补数】,就可把“负数”改为“正数”。
利用【补数】,就可把“相减”运算,改为“相加”。
求-1 【补数】的计算方法是:
  周期 + 负数 = 100 - 1 = 99。
其他负数,也可用此公式计算。
-------------
计算机中,没有数字。 1 和 0,都是代码。
八位二进制,称为一个字节。
0000 0000~1111 1111,共 256 个代码。
对应的十进制是:0~255。 周期就是 256。
-1,就可以用 255 = 1111 1111 (二进制) 代替,
-2,就可以用 254 = 1111 1110 (二进制) 代替,
那么,1111 1111 就称为-1 的补码;
同理,1111 1110 也就是-2 的补码。
。。。
补码的定义式,如下:
  负数的补码,就是:周期,加上该负数。
  正数,没有补码。必须直接运算,不可变换。
求补码,并不涉及“原码反码符号位 ”这些垃圾知识。
原码反码,在计算机中,都是不存在的。
-------------
补码,有什么意义?
借助于补码,就能用加法,代替减法运算。
那么,计算机中,只需要有一个加法器即可。
这就简化了硬件。
原码和反码,并没有这种功能。
所以,计算机中,只是使用补码。
原码反码,在计算机中,都不存在,根本就不需要讨论。

什么是补码

正负数字,存放在计算机中,就称为:补码。
正数,就直接以二进制存放。
负数,则需要变换一下,再存放。
--------------
如果,仅使用两位十进制数,就是 00~99,共有 100 个数字。
减一,就可以用 +99 代替:
  28 - 1 = 27
  28 + 99 = (1) 27
忽略进位,结果就是相同的。
于是,99,就是-1 的补数;
同理,98,就是-1 的补数;
利用【补数】,就可把“相减”运算,改为“相加”。
利用【补数】,就可把“负数”改为“正数”。
对于“-1”,其对应的【补数】就是:100-1 = 99。
-------------
计算机中,没有数字。1 和 0,都是代码。
八位二进制代码,称为一个字节。
0000 0000~1111 1111,共有 256 个代码。
-1,就可以用 256- 1 = 255 (=1111 1111) 代替,
-2,就可以用 256- 2 = 254 (=1111 1110) 代替,
那么,1111 1111 就称为-1 的补码;
同理,1111 1110 也就是-2 的补码。
-------------
计算机中,只有加法器,没有减法器。
做减法运算,必须使用【补码】,用加法来操作。
补码的定义式,如下:
  正数的补码,就是该数字本身。
  负数的补码,就用“模”,加上该负数,即可。
求补码,并不需要“原码反码符号位 ”这些垃圾知识。
补码的定义式如下。
 X >= 0: [ X ]补 = X
 X < 0:  [ X ]补 = 2^n - | X |
一般的计算机专业的书上,都有的。
补码=反码+1
补码(two's complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

阅读更多 >>>  X添加补码下标怎么弄

补码
注意:此处的'=='是相等的意思。'='是赋值的意思。
在机器世界里:
正数的最高位是符号位0,负数的最高位是符号位1。
对于正数:反码==补码==原码。
对于负数:反码==除符号位以外的各位取反。
     补码==反码+1.
     原码==补码-1后的反码==补码的反码+1。(读完本文后,应该能够直观地认识到本式的正确性)
可以轻易发现如下规律:
自然计算 :a-b==c.
计算机计算:a-b==a+b的补码==d.
c的补码是d.
通过此法,可以把减法运算转换为加法运算。
所以补码的设计目的是:
1.使符号位能与有效值部分一起参加运算,从而简化运算规则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.
如果还有什么疑问的请参考百度百科中的 补码

补码的准确定义

补码,是一个“代替负数进行运算的正数”。
定点小数的补码(mod=2)的定义式是:
  [X]补 = X     ( 0 ≤ X < 1 )
  [X]补 = 2 + X   (-1 ≤ X < 0 )
定点整数的补码(mod=2^n)的定义式是:
  [X]补 = X      ( 0 ≤ X < 2^(n-1) )
  [X]补 = 2^n-| X |  (-2^(n-1) ≤ X < 0 )
其中 n 是 2 进制的位数。
原码是一串二进制数,是原始数据,最高位为符号位,正数为0,负数为1.
反码是对原码各位进行求反得到,不改变符号位.
补码分两种情况:
1,对正数来说,补码即原码.
2,对负数来说,补码是原码的反码再加上1.
计算机中一般用补码来表示数据.

原码、反码、补码的基本概念

带符号数,有三种表示方法,即:原码、反码和补码。
但是,在计算机系统中,数值一律用补码来表示和存储。
所以,在计算机系统中,原码和反码,都是不存在的。
使用补码的意义:可以把减法或负数,转换为加法运算。
从而简化计算机的硬件。
=====================
补码的概念,来自于:补数。
比如钟表,时针转一圈,周期是 12 小时。
那么,倒拨 3 小时,可以用正拨 9 小时代替。
9,就是-3 的补数。 计算方法:9 = 12-3。
同理,分针倒拨 X 分,可以用正拨(60-X) 代替。
60,是分针的周期。
同理,三角函数的周期是 2π。 那么,
在-π/2 处 的函数值,就与(2π-π/2)= +3π/2 处 相同。
------------
使用两位十进制数:0~99,周期就是 一百。
那么,减一,就可以用 +99 代替。
  24-1 = 23
  24 + 99 = (1) 23
舍弃进位,这两种算法,功能就是相同的。
于是,99 就是 -1 的补数。
其它负数的补数,可以按照下式来求:
  补数 = 周期 + 负数
------------
计算机中使用二进制,补数,就改称为【补码】。
八位二进制是:0000 0000~1111 1111。
相当于十进制:0~255, 周期就是 256。
那么,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的补码,就是 1111 1111 = 255。
同理:-2 的补码,就是 1111 1110 = 254。
继续:-3 的补码,就是 1111 1101 = 253。
。。。
最后:-128 的补码,就是 1000 0000 = 128。
负数补码的计算公式:【 256 + 这个负数 】。
(式中的 256 = 2^8,是八位补码的周期。)
正数,并不存在补码。所以,也不用求补码,直接运算即可。
(也有人乱说:正数本身就是补码。)
------------
用计算机计算: 7-3 = 4。
计算机中,并没有减法器,必须改用补码相加。
竖式如下:
    7 的补码=0000 0111
   -3的补码=1111 1101
--相加-------------
   得:  (1) 0000 0100 = 4 的补码
舍弃进位,只保留八位,结果完全正确。
------------
借助于补码,可以简化计算机的硬件。
原码和反码,并没有这种功能。
所以,在计算机中,根本就没有它们。
它们都是什么? 就不用关心了。
在计算机系统中,正负数值,一律采用补码表示和存储。
原码反码,都是不用的。不必讨论。
正负数值,与补码的换算,可在下图中看出:
利用一个正数(即补码),就可以代替负数。
那么,计算机中,就没有负数了,也就没有减法运算了。
所以,只需一个加法器,就可以加减通吃了。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如
00000000
00000000
00000000
00000101

5的
原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0;
0变1)
比如:将00000000
00000000
00000000
00000101每一位取反,得11111111
11111111
11111111
11111010。
称:11111111
11111111
11111111
11111010

00000000
00000000
00000000
00000101
的反码。
反码是相互的,所以也可称:
11111111
11111111
11111111
11111010

00000000
00000000
00000000
00000101
互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000
00000000
00000000
00000101
的反码是:11111111
11111111
11111111
11111010。
那么,补码为:
11111111
11111111
11111111
11111010
1
=
11111111
11111111
11111111
11111011
所以,-5
在计算机中表达为:11111111
11111111
11111111
11111011。转换为十六进制:0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000
00000000
00000000
00000001
2、得反码:
11111111
11111111
11111111
11111110
3、得补码:
11111111
11111111
11111111
11111111
正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码
1100110011

1011001100

除符号位,按位取反
1011001101

除符号位,按位取反再加1

阅读更多 >>>  原码反码补码是什么意思,原码反码和补码有什么区别?

补码是什么?

补码是什么?
补码,是“代替负数”的正数。
时钟的时针,倒拨 3 小时,可用正拨 9 小时代替。
怎么算的:+9 =-3 + 12(周期)。
分针,倒拨 X 分,也可用正拨 (-X + 60)分代替。
---------------------
你只要找到计数周期,负数,就能换算成正数。
这个正数,就是负数的补码。
在数学中,有个概念,叫做:补数。
钟表,倒拨 2 小时,可以用正拨 10 小时来代替。
即:-2 的补数,就是 10。
---------
对于两位十进制数,减一,可以用加 99 代替。
如: 25 - 1 = 24
   25 + 99 = (1) 24
忽略进位 1 百,结果就是相同的。
即:-1 的补数,就是 99。
---------
计算机中,以八位二进制,作为一个字节。
-1,可以用 1111 1111 (即十进制 255) 来代替。
即:-1 的补数(补码),就是 1111 1111 (=255)。
即:256+这个负数, 这就是【负数补码的定义式】。
正数,不用做任何变换,也可以说:【正数没有补码】。
---------
利用补码,计算机用一个加法器,就可以做减法运算了。

补码的准确定义

这问题问的好。
很多讨论补码的人,都不知道补码的准确定义,只是知道“取反加一”的做法。
众所周知,中国式教育的缺陷就是【应试方案】,而不是【理解】。
一个知识点,给一个受过训练的大猩猩一份题,照猫画虎它也会做。
所以作对题,不能说明这个知识点你理解了。
教材上,有补码的定义式,翻开看看便知。
大佬早就给出了定义式。
整数补码的定义式:
 [X]补 = X      ;  0 ≤ X < 2^(n-1)
 [X]补 = 2^n-| X |  ;-2^(n-1) ≤ X < 0
小数补码的定义式:
 [X]补 = X     ; 0 ≤ X < 1
 [X]补 = 2+X    ;-1 ≤ X < 0
原码是一串二进制数,是原始数据,最高位为符号位,正数为0,负数为1.
反码是对原码各位进行求反得到,不改变符号位.
补码分两种情况:
1,对正数来说,补码即原码.
2,对负数来说,补码是原码的反码再加上1.
计算机中一般用补码来表示数据.

什么是补码,如何转换反码、补码、原码?

在计算机系统中,数值,一律用补码来表示和存储。
补码,其实,就是一个“代替负数进行运算”的正数。
使用了补码(正数)之后,在计算机中,就没有负数了。
随之而来的,就是:减法运算也都不存在了。
所以,借助于补码,计算机只需要配置一个加法器,就能走遍天下。
使用补码的目的,就是:简化计算机的硬件。
而原码、反码,都没有这种功能,所以,计算机中,根本就不用它们。
原码和反码,只能在纸上写一写而已。 在计算机中,都是不存在的。
---------------------
补码(一个正数),怎么就能代替负数呢?
你看时针:倒拨 3 小时,可以用正拨 9 小时代替吧?
你看三角函数:-π/2、+3π/2,两者的函数值也是相同的吧?
10 进制数,如果限定只用 2 位 ,那么就会有:
   25 - 1 = 24
   25 + 99 = (一百) 24
如果忽略进位一百(10^2),+99 就可以代替-1。
上面所说的这些正数,就是“负数的补数”。
求补数的公式是: 补数(即正数)= 负数 + 周期。
正数,必须直接就参加运算,不可再做任何变换。
就是说:正数,本身就已经是正数了,它并不存在什么补数。
---------------------
计算机用二进制,补数,那就称为“补码”了。
8 位 2 进制的周期,是:2^8 = 256。
8 位 2 进制,总共可以组成 256 个代码。
用其中的一半(即 128 个)代表负数,就是:-1 ~ -128。
那么:
-1 的补码,就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 的补码是:-2 + 256 = 254 = 1111 1110。
。。。
-128 的补码,就是:128 = 1000 0000。
---------------------
至此,你就可以推出“补码的定义式”:
 当 X >= 0, [ X ]补 = X;     零和正数不用变换。
 当 X < 0,  [ X ]补 = X + 2^n。 n 是补码的位数。
这是通用的公式。
在严谨一点的书上,都有这种公式,你去翻翻书吧。
---------------------
按照公式求补码,是极为简便的,而且还能理解补码的意义。
而且,反过来求(由补码求数值),也是很方便的。
实际上,你只要会“补码与数值”的互换,就够用了。
那么,没有必要学“原码反码取反加一符号位不变”了。
况且,原码和反码比补码,还少了一个数,取反加一,也无法使用。
当然,那些数学不好的老外,也只能使用这些“隔路”的花样。
---------------------
算式 5 - 7 =-2,计算机用八位补码计算如下:
    5 = 0000 0101
 [-7]补码 = 1111 1001
--相加-----------
  得: (1) 1111 1110 = [-2]补码
舍弃了进位,结果,就是正确的。
---------------------
反码补码原码怎么转换,来看看方法吧。
1、首先原始代码的最高位是符号位,0表示正,1表示负,中间值表示数字的绝对值。
2、符号的反转,正数符号的反转与原符号相同,负数的补数是该符号的最低有效位数加上1。
3、补数,正数的补数与原代码相同,负数的补数在其倒数第一的基础上加1。零分为+0和-0。 进行不同符号的加法或同一符号的减法时,不能直接进行加法或减法,不能直接给出正负的结果。
4、必须先取绝对值,然后再加上减法。 符号比特由较大的绝对值决定,因此出现了转码。 反码是对原始代码的改进。补码在针对加减运算和正负零的问题上都解决了,平时用的最多的也就是补码。

补码的意义

在计算机系统中,数值,一律采用补码表示和存储。
原码和反码,在计算机中,都是没用的,也都是不存在的。
补码的意义,得从“补数”谈起。
你看 2 位 10 进制的计算:
  25 - 1 = 24
  25 + 99 = (一百) 24
只要你舍弃超出 2 位数的进位,+99 就和-1 是等效的。
加法,也就代替了减法。
同样,+98,也可以代替-2。
。。。
这些正数,就是“负数的补数”。
利用补数,在计算过程中,就没有负数了。
同时,也就没有了减法运算。
求补数的公式,小学生都能写出来:
  补数=负数+10^n,
     n 是补数的位数,
     10^n 是 n 位数的计数周期。
----------------------
计算机用二进制,补数,就称为:补码。
补码,就是“代替负数”的正数。
使用了补码,不仅可以简化算法,而且还能简化硬件。
求二进制补码的公式,依然是:
  补码=负数+2^n。
在一个字节中,n = 8,计数周期是:2^8 = 256。
-1 的补码,就是:255 = 1111 1111 (二进制),
-2 的补码,就是:254 = 1111 1110,
。。。
-128 的补码,是:128 = 1000 0000。
---------------------
求补码,用“原码反码取反加一符号位不变”就费事了。
那些说法,都没有任何理论依据。
而且,也说不明白“补码是什么意思?”。
老外算术不行,也弄不懂周期的意思,才编造出这些骚操作。
我们的计算机专业老师,跟风讲这些,就是想多赚点课时费而已。
在计算机中,二进制数据有三种形式:原码、反码和补码,要弄清楚补码的意义,首先让我们来了解三种形式的定义。
假设字长为4,其中最高位为符号位:正数为0,负数为1。剩下的3位表示该数的绝对值。 正数的原码反码补码都是一样的。
1.原码
2.反码
反码就是在原码的基础上,符号位不变其他位按位取反(就是0变1,1变0)就可以了。
3.补码
补码也非常的简单,就是在反码的基础上按照正常的加法运算加1。
从前面的三种数字编码类型的定义,我们可以看出数据的原码,使用符号位来区分了正负数,更加符合人脑直观识别并且用于计算的表达方式。但是在计算机中,是通过补码的形式保存数据,下面将解释为什么计算机系统要用补码存放数据。
定义一个字长为4的二进制累加系统,该系统的规则就是从左到右依次累加0001;
如果最高位是符号位时,图表第二行表示原码对应的10进制数,不难发现,如果在确定字长为4时,累加过程是符合周期性变化的,原因就是当1111+1时会出现字节溢出的情况,10000的最高位溢出失效,导致结果变为0000;
在现实生活中,时钟显然是符合周期性的,12点过后是1点,人们早已习惯了这种思维方式,所以会忽略对时钟这种表示时间方式的思考。凌晨12点加1个小时,其实表式的时间是天数加1之后的1点,但是对于时钟系统而言,天数不是自己所能表示的,这就相当于上面图表中1111+1=0000(1|0000 1是溢出位,在字长为4的系统中是不能表示的)。
时钟系统和二进制数原码的累加系统都有周期性,具有周期性的原因是当前层次系统中有其不能表示或未能感知的其他层次系统。
计算机运算系统正是利用了周期性的这一特性。
假设时针向顺时针方向拨动为加,逆时针拨动为减。
所以很容易发现,在时钟中7-1=7+11,这就是周期系统中加减法发的转化方式,其实和简单,也很符合我们的直觉。
所以重新考虑原码的减法问题,n-m = n+(MAX-m),其中MAX就是该周期中所能表示的所有数的数量,放到上面原码的例子中就是16个,而放到时钟系统中就是12个。如:
在说原码累加系统加减法转化例子之前,我们再看下图表
为了方便说明在每一行的开始定义了该行的名称分别为A、A1、A2、B、B1、B2.
累加系统不同于周期系统的一点是会有负数的概念出现,A2行就是最高位表示符号位时原码解码后表示的十进制数。在图表中发现,当有符号位时二进制原码的累加转换为十进制数时,出现了与我们现实生活数学公理相违背的现象,错误发生在最高位为1后,如1001+1=1010(-1+1=-2),原因是在定义这个累加系统在运算时就没有让系统知道高位0与1有不同之处,也就是累加的计算过程中无法感知符号。
解决问题的方式有两种
在计算机系统中,解决这个问题的方式显然是用第二种,cpu是无法感知符号位的,这样做可以减少cpu设计难度,极大地提高运行效率。
所以也就是说cpu运算时还是按照A行进行累加,但在解码运算结果时做一些处理,即将A转变为B,而B1是不考虑溢出和临界值时的十进制正确结果。A解码为B的算法就是当最高位为1时,符号位不变,其他位取反,不难发现这就是反码的定义。
当这样转化后会发现出现了0和-0两个0并且会出现0 - 1 = -0这种情况(将0向左移动)。所以还得做一个简单的处理,就是去加一个1,也就是B1转化为B2,而B2就是最终的正确十进制值。
其实按照直觉可以发现,当符号位转化时,其他位应该取反才能得到正确结果,正数越加越大,负数越加越小。
根据我们的努力将A通过反码的解码方式转变为B,而让B的解码结果加1(补码),得到了B2,从而使累加系统当出现负数时变得合理起来。在转变为B2之后,我们需要解决的是如何用累加系统去表示减法。本质上和前面的时钟系统转化是一样的。可以借助上面的时钟系统以及下面的例子去理解累加系统的减法运算。
在看例子之前,稍微介绍一下“模” 的概念: 模是指一个计量系统的计数范围,取模运算实质上是计量器产生“溢出”的量,前面的周期系统中n-m = n+(MAX-m)得出的加减转化其实就是用到了模的概念,MAX就是模。
在计算机系统中,计算整数加减法时,需要经过以下步骤:

阅读更多 >>>  原码反码补码偏移码,二进制的原码、反码、补码、移码

什么是原码、反码、补码?

1):补码加法公式
   [X+Y]补

[X]补
+
[Y]补
2):补码减法公式
[X-Y]补
=
[X]补-[Y]补
=
[X]补
+
[-Y]补
其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.
计算机中,只有补码,没有原码反码。
只要掌握了补码,即可。
小数补码的定义式:
  [X]补 = X    ; 0 ≤ X < 1
  [X]补 = 2+X  ; -1 ≤ X < 0
 
例如:
  X = + 0.010 1000, 则 [X]补 = 0010 1000。
  X = -0.011 1000, 则 [X]补 = 1100 1000。
在计算机系统中,数值,一律用补码表示和存储。
计算机中,并没有原码和反码。
为什么用补码?
就是为了:简化硬件,节约成本。
因为,负数,是可以用一个正数(补码)代替的。
如: 24 - 1 = 23
   24 + 99 = (一百) 23
忽略进位,用 +99 就可以代替-1。
+99,就是-1 的补数。 计算机用二进制,就称为:补码。
用补码(正数)代替了负数,那么,计算机中,就没有负数了。
那么,在计算机中,就只有加法运算了。
所以,在计算机中,只需设置一个加法器,便可加减通吃了。
-------------
定点整数的补码(mod=2^n)定义式如下:
  [X]补 = X      ( 0 ≤ X < 2^(n-1) )
  [X]补 = 2^n - | X |  (-2^(n-1) ≤ X < 0 )
当 n = 8 时,[-128]补 = 256-128 = 1000 0000B。
-------------
定点小数的补码(mod=2)定义式如下:
  [X]补 = X     ( 0 ≤ X < 1 )
  [X]补 = 2 + X   (-1 ≤ X < 0 )
因此,-1.0 的补码为 2 +(-1) = 1.0000。
-------------

网站数据信息

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