小数的补码,原码,反码怎么相互转换?(二进制)

作者&投稿:家国 (若有异议请与网页底部的电邮联系)
小数的补码,原码,反码怎么相互转换?(二进制)~

化为2进制是整数部分除以二知道变为1
小数部分乘以2直到变为1
,符号位0表示正1表示负
正数:原码=补码
负数:
原码
=
正数部分(去掉负号)的二进制值,且符号位(最左边的比特位)为1
反码
=
正数部分(去掉负号)的二进制值,按位取反
补码
=
反码
+
1
小数点依旧用点
定点数
所谓定点数是指小数点位置固定不变的数。在计算机中,通常用定点数来表示整数与纯小数,分别称为定点整数与定点小数。
定点整数:一个数的最高二进制位是数符位,用以表示数的符号;而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位,如下所示:
0
1001010010001010001
数符位
数值位
小数位
因此,在一个定点整数中,数符位右边的所有二进制位数表示的是一个整数值。
定点小数:一个数的最高二进制位是数符位,用来表示数的符号;而小数点的位置默认为在数符位后面,不单独占一个二进制位,如图所示:
0
1001010010001010001
数符位|小数位
数值位
因此,在一个定点小数中,数符位右边的所有二进制位数表示的是一个纯小数。
2.浮点数
在计算机中,定点数通常只用于表示整数或纯小数。而对于既有整数部分又有小数部分的数,由于其小数点的位置不固定,一般用浮点数表示。
在计算机中所说的浮点数就是指小数点位置不固定的数。一般地,一个既有整数部分又有小数部分的十进制数d可以表示成如下形式:
d=r*10n
其中r为一个纯小数,n为一个整数。
如一个十进制数123.456可以表示成:0.123456*103,十进制小数0.00123456可以表示成0.123456*10-2。纯小数r的小数点后第一位一般为非零数字。
同样,对于既有整数部分又有小数部分的二进制数口也可以表示成如下形式:
d=r*2n
其中r为一个二进制定点小数,称为d的尾数;n为一个二进制定点整数,称为d的阶码,它反映了二进制数d的小数点的实际位置。为了使有限的二进制位数能表示出最多的数字位数,定点小数r的小数点后的第一位(即符号位的后面一位)一般为非零数字(即为“1”)。
在计算机中,通常用一串连续的二进制位来存放二进制浮点数,它的一般结构如图所示:
阶符
n
数符
r
|
阶码部分
|
小数位
尾数部分

请我给你的详解:原码、补码和反码

(1)原码表示法

原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。

例如,X1= +1010110

X2= 一1001010

其原码记作:

〔X1〕原=[+1010110]原=01010110

〔X2〕原=[-1001010]原=11001010

原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:

最大值为0.1111111,其真值约为(0.99)10

最小值为1.1111111,其真值约为(一0.99)10

当用8位二进制来表示整数原码时,其表示范围:

最大值为01111111,其真值为(127)10

最小值为11111111,其真值为(-127)10

在原码表示法中,对0有两种表示形式:

〔+0〕原=00000000

[-0] 原=10000000

(2)补码表示法

机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。

例如,[X1]=+1010110

[X2]= 一1001010

[X1]原=01010110

[X1]补=01010110

即 [X1]原=[X1]补=01010110

[X2] 原= 11001010

[X2] 补=10110101+1=10110110

补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:

最大为0.1111111,其真值为(0.99)10

最小为1.0000000,其真值为(一1)10

采用8位二进制表示时,整数补码的表示范围:

最大为01111111,其真值为(127)10

最小为10000000,其真值为(一128)10

在补码表示法中,0只有一种表示形式:

[+0]补=00000000

[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)

所以有[+0]补=[+0]补=00000000

(3)反码表示法

机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。

例如:X1= +1010110

X2= 一1001010

〔X1〕原=01010110

[X1]反=〔X1〕原=01010110

[X2]原=11001010

[X2]反=10110101

反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。

例1. 已知[X]原=10011010,求[X]补。

分析如下:

由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即

[X]原=10011010

[X]反=11100101

十) 1

[X]补=11100110

例2. 已知[X]补=11100110,求〔X〕原。

分析如下:

对于机器数为正数,则〔X〕原=〔X〕补

对于机器数为负数,则有〔X〕原=〔〔X〕补〕补

现给定的为负数,故有:

〔X〕补=11100110

〔〔X〕补〕反=10011001

十) 1

〔〔X〕补〕补=10011010=〔X〕原

或者说:

数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,

原码就是这个数本身的二进制形式。
例如
0000001 就是+1
1000001 就是-1

正数的反码和补码都是和原码相同。

负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101
一个数和它的补码是可逆的。

为什么要设立补码呢?

第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)

有人会问
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个

又例:
1011
原码:01011
反码:01011 //正数时,反码=原码
补码:01011 //正数时,补码=原码

-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1

0.1101
原码:0.1101
反码:0.1101 //正数时,反码=原码
补码:0.1101 //正数时,补码=原码

-0.1101
原码:1.1101
反码:1.0010 //负数时,反码为原码取反
补码:1.0011 //负数时,补码为原码取反+1

在计算机内,定点数有3种表示法:原码、反码和补码

所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 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

正数的原反补是一样的
在计算机中,数据是以补码的形式存储的:
在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负;
其余n-1位为数值位,各位的值可为0或1。

当真值为正时:原码、反码、补码数值位完全相同;
当真值为负时: 原码的数值位保持原样,
反码的数值位是原码数值位的各位取反,
补码则是反码的最低位加一。
注意符号位不变。
如:若机器数是16位:
十进制数 17 的原码、反码与补码均为: 0000000000010001
十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111

化为2进制是整数部分除以二知道变为1
小数部分乘以2直到变为1
,符号位0表示正1表示负
正数:原码=补码
负数:
原码
=
正数部分(去掉负号)的二进制值,且符号位(最左边的比特位)为1
反码
=
正数部分(去掉负号)的二进制值,按位取反
补码
=
反码
+
1
小数点依旧用点
定点数
所谓定点数是指小数点位置固定不变的数。在计算机中,通常用定点数来表示整数与纯小数,分别称为定点整数与定点小数。
定点整数:一个数的最高二进制位是数符位,用以表示数的符号;而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位,如下所示:
0
1001010010001010001
数符位
数值位
小数位
因此,在一个定点整数中,数符位右边的所有二进制位数表示的是一个整数值。
定点小数:一个数的最高二进制位是数符位,用来表示数的符号;而小数点的位置默认为在数符位后面,不单独占一个二进制位,如图所示:
0
1001010010001010001
数符位|小数位
数值位
因此,在一个定点小数中,数符位右边的所有二进制位数表示的是一个纯小数。
2.浮点数
在计算机中,定点数通常只用于表示整数或纯小数。而对于既有整数部分又有小数部分的数,由于其小数点的位置不固定,一般用浮点数表示。
在计算机中所说的浮点数就是指小数点位置不固定的数。一般地,一个既有整数部分又有小数部分的十进制数d可以表示成如下形式:
d=r*10n
其中r为一个纯小数,n为一个整数。
如一个十进制数123.456可以表示成:0.123456*103,十进制小数0.00123456可以表示成0.123456*10-2。纯小数r的小数点后第一位一般为非零数字。
同样,对于既有整数部分又有小数部分的二进制数口也可以表示成如下形式:
d=r*2n
其中r为一个二进制定点小数,称为d的尾数;n为一个二进制定点整数,称为d的阶码,它反映了二进制数d的小数点的实际位置。为了使有限的二进制位数能表示出最多的数字位数,定点小数r的小数点后的第一位(即符号位的后面一位)一般为非零数字(即为“1”)。
在计算机中,通常用一串连续的二进制位来存放二进制浮点数,它的一般结构如图所示:
阶符
n
数符
r
|
阶码部分
|
小数位
尾数部分

一个二进制的小数,比如:-0.1011。
你把小数点,右移四位,成为整数:-1011。
这个整数,变成原码反码补码,你就自己变吧。
之后,再把小数点,左移四位,即可。

都是常识。
先去看看书。
那一步不懂,你指出来吧。


计算机的原码,反码,补码是怎么回事?可以举例说明吗?
2、反码 反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码的表示方法是:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为1。例如:[+7]反= 0 0000111 B;[-7]反= 1 1111000 B。3、补码 正数:正数的补码...

什么是原码 补码 反码
有符号数,有三种表示方法,即原码、反码和补码。在计算机系统中,数值一律用补码来表示和存储。在计算机系统中,原码和反码,都是不存在的。=== 数值 0,在八位机中,就是 0000 0000。+1,就是加上一,即为:0000 0001。+2,就再加上一,即为:0000 0010。其他正数,依次递增即可。。。

小数和负数的原码反码和补码怎么表示
两数相加:机器首先判断两个数是否符号相同,如果相同则两数相加。若符号不同,则两数相减。两数相减:相减运算之前,先判断两数绝对值的大小,用大数减去小数,然后再确定差值的符号。(二)反码;反码的表现方式:正数,其反码和原码的形式相同;负数,反码与其原码的数值部分各位变反;即符号位不变,...

原码、补码、反码之间是怎样转换的?
就将除了首位的1除外的所有数字取反。如下图所示。点击即可查看。4、如果想要把原码转换成补码,对正数来说,补码与原码相同,对负数来说,之间将反码加1就可以得到补码,计算示例如下图所示。当然,我们还可以将补码转换为原码。如果是负数得到的补码,可以通过求该补码的补码来得到原来的原码。如下。

原码反码补码怎么表示
例如正数(+1101)的原码、反码、补码都是01101。 (2)对于负数来说,其原码、反码是不相同的。例如:负数(-1101)的原码、反码和补码表示如下:原码 11101,反码 10010 补码 10011。这就是说,负数的反码是将零位(除符号位)的“1”换“0”,“0”换“1”就是将原码各位“反”一下便得,而负数的补码则...

原码、补码、反码之间是怎样转换的?
原码、反码和补码之间的转换主要针对负整数,而对于正整数,它们的表示形式是相同的,都是符号位固定为0,数值位不变。转换规则如下:1.负整数的原码到反码:原码的符号位保持不变,其他位取反(0变1,1变0)。2.反码到补码:反码的符号位仍为1,数值部分最低位加1。具体操作如下:-正整数:原码...

数字电路——原码、补码、反码
原码,顾名思义,就是直接将数值转换为二进制,如+12的原码就是(01100)_2,而-7的原码则是(10111)_2。反码是对原码进行特殊处理,例如-12的原码是(11100)_2,取反后去掉符号位得到0011,再加上符号位得到(10011)_2,这就是它的反码。补码则有其独特的计算规则,如十进制数3的补码为10的一...

二进制正,负数的原码,反码,补码三者之间是什么关系
比如如果是8位二进制:[+1]原=00000001[-1]原=10000001第一位是符号位。2、反码正数的反码是其本身负数的反码是在其原码的基础上,符号位不变,其余各个位取反.[+1]=[00000001]原=[00000001]反[-1]=[10000001]原=[11111110]反第一位是符号位。3、补码正数的补码就是其本身负数的补码是在其...

什么是二进制数的原码、反码、补码?
例1:+66 66的二进制:1000010,所以+66的原码: 0 1000010 =补码: 0 1000010=反码: 0 1000010 负整数的原码:仍是这个数的二进制,符号位为1;负整数的原码、反码、补码计算:先求原码,再求反码,最后求补码;原码转换为反码:符号位不变,数值位按位取反;原码转换为补码:符号...

补码,原码,反码什么的。有什么作用啊!
作用如下:1、补码:解决负数加法运算正负零问题,弥补了反码的不足。2、原码:可直观反映出数据的大小。3、反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则。

文县13499648744: 原码 反码 补码怎么转换 -
独和秋水: 反码补码原码怎么转换,来看看方法吧. 1、首先原始代码的最高位是符号位,0表示正,1表示负,中间值表示数字的绝对值. 2、符号的反转,正数符号的反转与原符号相同,负数的补数是该符号的最低有效位数加上1. 3、补数,正数的补数与原代码相同,负数的补数在其倒数第一的基础上加1.零分为+0和-0. 进行不同符号的加法或同一符号的减法时,不能直接进行加法或减法,不能直接给出正负的结果. 4、必须先取绝对值,然后再加上减法. 符号比特由较大的绝对值决定,因此出现了转码. 反码是对原始代码的改进.补码在针对加减运算和正负零的问题上都解决了,平时用的最多的也就是补码.

文县13499648744: 小数的补码,原码,反码怎么相互转换?(二进制) -
独和秋水: 化为2进制是整数部分除以二知道变为1 小数部分乘以2直到变为1 ,符号位0表示正1表示负 正数:原码=补码 负数: 原码 = 正数部分(去掉负号)的二进制值,且符号位(最左边的比特位)为1 反码 = 正数部分(去掉负号)的二进制值,按位取...

文县13499648744: 原码与补码的转换[ - 3]反=[10000011]反=11111100 原码 反码负数的补码是将其原码除符号位之外的各位求反之后在末位再加1.[ - 3]补=[10000011]补=... -
独和秋水:[答案] 两个说法都没有错,我们举个例子来看看就明白了: 1、10001的补码是取反后在再加1,也就是11110+1=11111; 2、如果是11111变回原码呢?我们可以采取逆过程先减1,11111-1=11110,再取反变为10001; 3、如果要是在补码变原码时先去反再加...

文县13499648744: 计算机中如何表示小数的原码和补码 -
独和秋水: 先转换成原码,小数点左边为符号位(正数——0;负数——1),然后转换成反码(即每一位取反),最后再加1. eg:x=-0.11101转换成原码x=1.11101;然后转换反码x=1.00010;最后转换成补码(即+1)x=1.00011. PS:符号位在转换反码的时候不需要取反.

文县13499648744: 真值与码值有何区别?原码、反码、补码三者之间如何换算? -
独和秋水:[答案] 如果原码00000 反码就是11111 补码是反码(正数) 反码+1(负数) 真值是一个变量本身所具有的真实值 码值就是个表

文县13499648744: 真值与码值有何区别?原码、反码、补码三者之间如何换算? -
独和秋水: 如果原码00000 反码就是11111 补码是反码(正数)反码+1(负数) 真值是一个变量本身所具有的真实值 码值就是个表

文县13499648744: 小数怎么变补码和反码? -
独和秋水: 数值有正负之分,计算机为了存放负数,就用一个数的最高位存放符号(0为正,1为负),计算机里就出现了正零和负零现象.如果用1个byte来写,正零是00000000,负零是10000000.正零不等于负零了.为了使涉及负数的运算不出错,想出...

文县13499648744: 【讨论】原码补码反码之间有没有简便一下的转换方式啊
独和秋水: 正数:三者均一致;0:原码、反码有正0和负0之分,原码正0为“00...0”,原码负0为“10...0”,反码正0为“00...0”,反码负0为“11...1”;补码0只有“00...0”一种.负数:二进制真值加上一位符号位1变为原码;原码除符号位外每位取反变为反码;反码加1变为补码.附:补码符号位求反变为移码.(不论正副)

文县13499648744: 请教原码怎么转换补码?怎么转换反码? -
独和秋水: 正数的原反补码都是相同的. 所以60原码,反码,补码都是111100 负数的原码就是前面加个1,表示负号,如果用8位来表示: 60的原码是1011 1100 反码是原码负号不变,其它位相反,所以是1100 0011 补码是在反码的基础上再加1 ,所以是 1100 0100

文县13499648744: 原码反码补码的求解方法 能详细点的谢谢了,大神帮忙啊 -
独和秋水: 原码转反码:对于正数,原码与反码相同,对于负数,反码保持原码的符号位不变,而其他各位取反. 原码转补码:对于正数,原码与补码相同,对于负数,补码保持原码的符号位不变,而其他各位取反,然后在最低位加1. 补充: 举个例子...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网