-17的原码是多少,补码是多少?

数字(正数、负数、零),是以各种代码,存入计算机的。

-17的原码为10010001;-17补码为11101111。

补码转化为原码_补码转化原码计算器补码转化为原码_补码转化原码计算器


补码转化为原码_补码转化原码计算器


-0.1101

用八位二进制表示,位表示符号位,1为负,0为正。补码为其的原码取反加1,17原码为00010001,取反加1为11101110+1=11101111

原码与补码的转换:

1、首先要知道转换规则:将原代码转换为逆代码:符号位不变,数字位分别“按位倒转”。

2、反向代码转换也是如此,但规则不同:符号位保持不变,数字位“按位倒转”。

3、然后,原码转换为补码的规则:保持符号位不变,数字位逐位反转,一位加1。

4、将的补码转换为原码:保持符号位不变,数字位按位反向,一位加1,即补码的补码等于原码。

5、补码(变量补码)的转换规则与之前不同,将符号位和数字位颠倒,一位加1。

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

八位机,就是用 8 位二进制,来参加计算。

一个二进制的小数,比如:-0.1011。

[10000000]补

你把小数点,右移四位,成为整数:-1011。

这个整数,变成原码反码补码,你就自己变吧。

都是常识。

先去看看书。

那一步不懂,你指出来吧。

补码(或者原码和反码)和变形补码之间如何转换

拓展资料:计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过是我们绝大多数人生来具有10个手指头这个解剖学事实的结果。

变形补码一般指的是“模4补码”,其实相对于“模2补码”来说,就是多了一位符号位,而这一位主要是用来判定溢出的。因此,对于正数,变形补码在模2补码前面多加个0;对于负数,变形补码在模2补码前面多加个1。

正数的补码和原码相同,负数的补码取反(0变为1,1//符号位不变,各位求反即是反码变为0),在一位加1(逢二进一)

正数的反码和原码相同,负数的补码取反(0变为1,1变为0)

原码,补码,反码

好好看看书吧,求补码还有更好的方法,

设有一 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

再举一例,我们来看整数-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

计算机中,只有补码,并没有原码和反码。

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

补码是怎么回事?这得从“补数”谈起。

计算机所能计算的位数,是固定的,如八位机、16 位。。。

位数限定之后,就可以用“补数”代替负数,用加法实现减法运算。

如限定两位十进制,-1,就可以用 +99 代替。

25 - 1 = 24

25 + 99 = (一百) 24

舍弃进位,只取两位,这两种算法,功能就完全相同。

99,就是-1 的补数。计算公式:补数 = 一百+负数。

一百,是用两位十进制数,循环计数的周期。

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

计算机用二进制,补数,就改称为:补码。

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

八位二进制循环计数的周期,是:2^8 = 256。

求负数补码的计算公式,也是: 周期 + 负数。

-1 补码就是:256 + (-1) = 255 = 1111 1111(二进制)。

正数,不用转换,直接参加运算,所以,正数不存在补码。

也有人说:正数自身就是补码。

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

举例说明,用八位补码计算: 5 - 7 = -2。

5 而负数补码则是按位取反再+1 = 0000 0101

-7 的补码= 1111 1001

--相加-------------

舍弃进位,只保留八位,这就用加法,实现了 5-7。

原码,补码?

正数的补码就是把1换成0,0换成1

你的说法是正确的~

原码,补码?

它们所代表的3、负数补码表示的范围比原码稍宽,多一种数码组合。对于定点数,若为纯小数,表围为:数值,不一般多。

如果是八位,

补码的表围:-12之后,再把小数点,左移四位,即可。8~+127;

原码的表围:-127~+127。

0的原码,补码,反码是什么

有符号数

要知道,世界上,只有一个零。

但是,原码反码,都编制了两组代码。这就是“逆天”了。

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

零的原码,有两个代码:

[+0]原码 = 0000 0000、[-0]原码 = 1000 0000。

反码,不甘落后,也是两个代码:

[+0]反码 = 0000 0000、[-0]反码 = 1111 1111。

它们,都是重复定义了“零的编码”,这就造成了混乱。

这就导致,这两种代码,根本就无法使用。

而且,由于零多占用一组代码,那么,所能表示的数字,必然就少一个。

如八位的原码反码,都不能表示-128。

因此,用“取反加一”来求 0 和-128 补码,都是不可能解决的!

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

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

不用原码反码,也就是说,计算机无法使用它们。

补码的理论,来源于数学的规律,并非是人为的胡编乱造。

零,在补码中,只用的一组代码来表示,这就不会产生混乱。

0 的八位补码,就是一个:0000 0000。

并没有违规的正负零的补码。

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

0 和-128 的补码,都是怎么求出来的?

补码,有自己的定义式,与原码反码,并无关系。

这定义式,是由数学理论推导出来的,要比的“取反加一”更准确严密。

当 X >= 0: [ X ]补码 = X;

当 X < 0: [ X ]补码 = X + 2^n, n 是补码的位数。

按照定义式,0 和-128 的八位补码,都可以求出来了。

[ 0 ]补码 = 0000 0000。

[-128]补码 = -128 + 2^8 = 128 = 1000 0000 (二进制)。

如果用“取反加一”,可就难办了。

因为,-128 并没有原码和反码,拿什么取反加一!

按照“取反加一”,零的补码,也将是“负零的反码+1”。

那么,[-0]补码=0000 0000,符号位是正的,也是无法解释的结果。

定义0的原码反码和补码时,要注意计算机辨认这里的0需要分正0和负0,所以

(8位表示)原码:00000000 反码:00000000 补码:000000//符号位不变,在反码的基础上加100

10000000 11111111

0的原码00000000 反码11111111 补码00000000 移码10000000

二进制原码补码转换c语言源代码

反码:正数的反码和原码一样,负数的反码就是:符号位不变,数值位逐位取反

#include

int main()

{char in[10], out[10];

scanf("%s", in);

if(strlen(in) < 8 || in[0] == 0) printf("%s

", in);

else

{int i;

out[0] = '1' ;

for(i = 1; i < 8; i ++)

{if(in[i] == '0')

o当真值为正时:原码、反码、补码数值位完全相同;ut[i] = '1';

else out[i] = '0';

}for(i = 7; i >0; i --)

{if(out[i] == '0')

{out[i] = '1';

break;

}else out[i] = '0';

}out[8] = 0;

printf("%s

", out);

}}

负数的补码在计算机中是如何表示的?

所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

对于十进制的数-27,在寄存器内是:1,1100101。

计算机存储负数采用补码的存储形式,所以我们要先计算出-27的原码形式:运用十进制转二进制的方法转为二进制形式为:1,0011011。然后再转化为补码,原码转化为补码的方法为将原码初符号位全部取反然后再加1。

所以得出存储的补码形式:1,0011011→1,1100100+1=1,1100101。

扩展资料:

补码的性质:

以的表示方法。补码定义式为基础,沿数轴列出典型的真值、原码与补码表示,可清楚了解补码的有关性质 。

1、在补码表示中,位x0(符号位)表示数的正负,在形式上与原码相同,即 0正 1负。但补码的符号位是数值的一部分,由补码定义式计算而得。例如,负小数补码中为 x0为1,这个 1是真值X(负)加模 2后产生。

2、在补码表示中,数 0只有一种表示,[+0]补 =[-0]补 =0.000……0。

-1~1-2^(-n),若为纯整数,表围为:-2^n~2^n-1。

原码求补码:

正数:

正整数的补码是其二进制表示,与原码相同。

例:+9的补码是00001001。

负数:

例:求-5的补码。

-5对应带符合位负数5(10000101)→除符号位外所有位取反(11111010)→加00000001(11111011)。

所以-5的补码是11111011。

0的补码:

数0的补码表示是的。

[+0]补=[+0]反=[+0]原=00000000。

[ -0]补=11111111+1=00000000。

参考资料来源:

原码、反码和补码的转换及表围

原码:1.1101

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

在计算机中,并没有原码和反码。

所以,原码和反码,补码值:0与补码的转换,是毫无意义的。

你只要掌握“数值与补码”的转换,就够用了。

下表中,有这个转换的关系式:

谁能告诉我计算机的原码补码和反码的具体定义是什么?

数在计算机中是以

二进制

形式表示的。

数分为

和无符号数

。原码、

反码

、补码

都是有

符号

定点数

一个有符号定点数的位为符号位,0是正,1是副。

以下都以8位

整数

为例,

原码就是这个数本身的二进制形式。

例如

就是+1

1000001

就是-1

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

负数

[-3]反=[10000011]反=11111100

负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

[-3]补=[10000011]补=11111101

一个数和它的补码是可逆的。

为什么要设立补码呢?

是为了能让计算机执行减法:

[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0

正零:00000000

负零:10000000

这两个数其实都是0,但他们的原码却有不同的表示。

但是他们的补码是一样的,都是00000000

特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)

=[1110100100000000]反+1

=11111111+1

=(1//正数时,补码=原码)00000000

=00000000(位溢出了,符号位变成了0)

有人会问

10000000这个补码表示的哪个数的补码呢?

其实这是一个规定,这个数表示的是-128

所以n位补码能表示的范围是

-2^(n-1)到2^(n-1)-1

比n位原码能表示的数多一个

又例:

1011

反码:01011

//正数时,反码=原码

补码:01011

-1011

原码:11011

反码:10100

补码:10101

//负数时,补码为原码取反+1

0.1101

原码:0.1101

//正数时,反码=原码

补码:0.1101

反码:1.0010

补码:1.0011

//负数时,补码为原码取反+1

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

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

数值

的大小。

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

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