+0或者-0的源码、反码、补码

作者&投稿:束锦 (若有异议请与网页底部的电邮联系)
请问+0和-0的原码,反码和补码分别是什么?~

针对一个数字,可以求出各种码。
数字,只有:负数、零、正数。
数字中,从来就没有+0、-0!
----
0 的原码,有两种:0000 0000、1000 0000。
0 的反码也有两种:0000 0000、1111 1111。
有人就简称:+0、-0。
它们,已经是原(反)码,并不是数了。
你不能说: +0 和-0 的原码、反码。
你只能问: 0 的原码、反码和补码是什么。





如果是在字长为8位的计算机上,
+0的原码是00000000 -0的原码是10000000
+0的反码是00000000 -0的反码是11111111
+0和-0的补码均为00000000

[+0]原码=0000 0000,   [-0]原码=1000 0000

[+0]反码=0000 0000,   [-0]反码=1111 1111

[+0]补码=0000 0000,   [-0]补码=0000 0000  

你会发现,+0和-0的补码是一样的。即 0的补码只有一种表示。

这里解释一下[-0]补码是怎么得来的。

负数的补码就是反码整体加一。符号位上的进位舍弃。(所以,舍弃了符号位的补码的第一位是数值位,不是符号位,符号位舍弃了)

另外解释一下原码符号位和补码符号位的关系,补码的符号位不是保持原码的第一位不变,而是 符号位不变,[-0]反码的第一个1是符号位,尾数中的7个1是数值位,尾数加一后,数值位产生了进位,1111 1111+1=1 0000 0000(计算补码的过程中,并不是先保证第一位不变,而是保证符号位不变,保证补码规则是反码整体加一)。

所以,补码能表示的数的个数中,比原码反码少了一个,所以补码可以多表示一个真值为-128的数。

但是,多表示的这个数-128比较特殊,只有原码和补码,没有反码。

-128的补码是1000 0000。128的补码为什么是1000 0000。因为8位二进制的原值表达范围为:-127至127,共有256个组合序列 0000 0000 至1111 1111 。+128的原值在8位中是表达不出来的。

扩展资料:

数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。

对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。

一个数在计算机中的二进制表示形式, 叫做这个数的机器数。

机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。

因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 [10000010],其最高位1代表负,其真正数值是 -2 而不是形式值130([10000010]转换成十进制等于130)。

所以将带符号位的机器数对应的真正数值称为机器数的真值。 

参考资料:

原码_百度百科

反码_百度百科

补码_百度百科



[+0]原码=0000 0000,   [-0]原码=1000 0000

[+0]反码=0000 0000,   [-0]反码=1111 1111

[+0]补码=0000 0000,   [-0]补码=0000 0000  

补码没有正0与负0之分。正数的反码、补码和其源码相同,负数的反码是其源码,除符号位外其他位取反负数的补码是取其反码后加1。

详细释义:

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

(一)反码表示法规定:

1、正数的反码与其原码相同;

2、负数的反码是对正数逐位取反,符号位保持为1;

(二)对于二进制原码10010求反码:

((10010)原)反=对正数(00010)原含符号位取反= 反码11101 (10010,1为符号码,故为负)

(11101) 二进制= -2 十进制

(三)对于八进制:

举例 某linux平台设置了默认的目录权限为755(rwxr-xr-x),八进制表示为0755,那么,umask是权限位755的反码,计算得到umask为0022的过程如下:

原码0755= 反码 0022 (逐位解释:0为符号位,0为7-7,2为7-5,2为7-5)

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

扩展资料

转换方法

由于正数的原码、补码、反码表示方法均相同,不需转换。在此,仅以负数情况分析。

(1) 已知原码,求补码。

例:已知某数X的原码为10110100B,试求X的补码和反码。

解:由[X]原=10110100B知,X为负数。求其反码时,符号位不变,数值部分按位求反;求其补码时,再在其反码的末位加1。

1 0 1 1 0 1 0 0 原码

1 1 0 0 1 0 1 1 反码,符号位不变,数值位取反

1 +1

1 1 0 0 1 1 00 补码

故:[X]补=11001100B,[X]反=11001011B。

(2) 已知补码,求原码。

分析:按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1 有方法。

例:已知某数X的补码11101110B,试求其原码。

解:由[X]补=11101110B知,X为负数。

采用逆推法

1 1 1 0 1 1 1 0 补码

1 1 1 0 1 1 0 1 反码(末位减1)

1 0 0 1 0 0 1 0 原码(符号位不变,数值位取反)

参考资料来源:百度百科  反码






0原码是00000000
-0原码是10000000

0反码是00000000
-0反码是11111111

0补码是00000000
补码没有正0与负0之分

正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1。

扩展资料:

原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂。一个字长为n的机器数能表示不同的数字的个数是固定的2^n个,n=8时2^n=256;用来表示有符号数,数的范围就是-(2^(n-1)-1)~+2^(n-1)-1,n=8是这个范围就是-127~+127。

但是在不需要考虑数的正负时,就不需要用一位来表示符号位,n位机器数全部用来表示是数值,这时表示数的范围就是0~2^n-1,n=8时这个范围就是0~255.没有符号位的数,称为无符号数。

参考资料:

原码-百度百科





0原码是00000000
-0原码是10000000

0反码是00000000
-0反码是11111111

0补码是00000000
补码没有正0与负0之分

正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1

针对数字,可以求其原码反码补码。
数字,只有:正数、零、负数。
哪有什么正零、负零?
------
零的原码有两种形式:00000000、10000000。
简称为:+0或者-0。
为此,有人就瞎理解了,就以为,零,是有两种。

记住:是零的原码(以及反码)有两种。
   不是有两种零。
   +0、-0,这些都是码,不是数。
------
+0、-0,既然是原码,那么,
再转换成别的码,相信你自己都会的。


补码10000000原码是多少
所以,八位的原码反码,只能表示-127 ~ +127。所以,八位的原码反码,都无法表示-128。因此,用“取反加一”求-0 或-128 的补码,都是行不通的。同样,用“取反加一”求补码 1000 0000 对应的原码,也是不灵的。--- 求补码的正规做法,是使用定义式:当 X >= 0, [ X ]补 = X...

计算机源码,反码,补码之间怎么计算?
1、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同。2、负整数的符号位固定为1,由原码变为补码时,规则如下:原码符号位1不变,整数的每一位二进制数位求反,得到反码;反码符号位1不变,反码数值位最低位加1,得到补码。3、例如正整数的原码为01110110,则反码和补码也为...

6的原码 反码 补码分别是什么?
例如:X=+101011 , [X]原= 0010_1011 X=-101011 , [X]原= 1010_1011 位数不够的用0补全。PS:正数的原、反、补码都一样,0的原码跟反码都有两个,因为这里0被分为+0和-0。反码 知道了原码,那么你只需要具备区分0跟1的能力就可以轻松求出反码,为什么呢?因为反码就是在原码的基础上,...

C语言中的0和1代表什么?
在C语言中,0和1通常表示二进制数字系统中的两个基本数字,相关知识如下:1、二进制数字系统:0表示二进制中的零,通常用于表示关闭或未发生的状态。在C语言中,0通常表示假(false)或空。1表示二进制中的一,通常用于表示打开或发生的状态。在C语言中,1通常表示真(true)或有值。2、存储和通信...

请问计算机的补码总为什么0有唯一的补码,即[+0]=[-0]=00000000?[-0]不...
貌似是因为计算机中没有+0和-0的区别。拿8位机举例:如果有正零和负零的区别的话计算机一位的长度只能表示-127~+127共255个数,但是如果把1000,0000即我们认为的-0判断成+128就能多表示一个数。为了功能更强大,所以设计人员让计算机内部就不区别+0,-0所以也就不存在-0这个东东,所以0的补码是...

“在计算机中,原码和反码不能表示 -1。”这种说法是否正确,为什么?
“在计算机中,原码和反码不能表示 -1。”,这种说法不正确。源码和反码都能表示-1。[-1]原= 1000 0001。[-1] = [10000001]原 = [11111110]反。

设机器数为8位,x= 117,y=-88 请分别写出x,y的原码,补码,反码
42(10)=101010(2) -42(10)源码= 1(符号位 1代表负;0代表正) 0(不足7位补0)101010 反码= 1(符号位无需变反) 1010101(数值位变反) 补码= 1 1010110(二进制加一) 1010101 +0000001 --- 1010110 1+1=10(进一) 1+0=1 0+0=0 ...

二进制数的补码怎么求
1、二进制补码的计算方法:二进制的补码计算非常简单,各种教材中也经常使用二进制来说明源码、反码与补码三者的关系,掌握一定基础的人都知道一下规则:(1)原码。最高位为符号位,0表示正数,1表示负数。例如:X=0b11(3),四比特表示原码=0011(3);X=-0b11(-3),四比特表示原码=1011(11);...

汇编语言问题 在单片机LED上显示数字(0~9)的源代码是什么啊?
这个有查表的方法来做:;;8051 ;;晶体振荡F=12Mhz ;;;KEY32 REG P3.2 ;ORG 0000H AJMP MAIN ORG 0003H RETI RETI ORG 000BH RETI ORG 0013H RETI RETI ORG 001BH RETI ORG 0023H RETI DB C0H ;0 ADRRESS 0024H DB F9H ;1 DB A4H ;2 DB B0H ;3 DB 99H ;4 DB 92H ;5...

汇编语言问题 在单片机LED上显示数字(0~9)的源代码是什么啊?
这个有查表的方法来做:;;8051 ;;晶体振荡F=12Mhz ;;;KEY32 REG P3.2 ;ORG 0000H AJMP MAIN ORG 0003H RETI RETI ORG 000BH RETI ORG 0013H RETI RETI ORG 001BH RETI ORG 0023H RETI DB C0H ;0 ADRRESS 0024H DB F9H ;1 DB A4H ;2 DB B0H ;3 DB 99H ;4 DB...

沧源佤族自治县15034807883: 请问+0和 - 0的原码,反码和补码分别是什么? -
蒙张赛克:[答案] 如果是在字长为8位的计算机上, +0的原码是00000000 -0的原码是10000000 +0的反码是00000000 -0的反码是11111111 +0和-0的补码均为00000000

沧源佤族自治县15034807883: 用8位二进制表示 ,+0和 - 0的各原码 反码 补码是多少 -
蒙张赛克:[答案] 0在原码和反码中有两种表示,补码中只有一个,正数的原、反、补码都是一样的,显然一楼的回答是错的,二楼的回答是正确滴! +0 -0 原码:00000000 100000000 反码:00000000 111111111 补码:00000000 000000000

沧源佤族自治县15034807883: +0或者 - 0的源码、反码、补码分别是什么?补码是一样的吗? -
蒙张赛克:[答案] 0原码是00000000 -0原码是10000000 0反码是00000000 -0反码是11111111 0补码是00000000 补码没有正0与负0之分 正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1

沧源佤族自治县15034807883: 负0的原码为什么负0的补码 -
蒙张赛克: 对于负数 补码=原码取反+1 原码=补码-1后取反原码为-0 ,也就是10 -为符号位用1表示 ,取反后是01 01再加1是10, 1为符号位 也就是-0

沧源佤族自治县15034807883: 符号数的原码、补码和反码表示中,能唯一表示正零和负零的是? -
蒙张赛克:[答案] 原码和反码都可以 原码+0 -0反码 正零00000000 负零11111111 补码没有负零

沧源佤族自治县15034807883: 原码 补码 反码 之间有什么关系 -
蒙张赛克: 原码、反码、补码 1、 表示一个数值要先说明是用多少bit,例如: 用8bit表示数值时,(-128)没有相对应的原码和反码, (-128)补码 = (1000 0000) 同理(2B=16bit)表示:(-32768)补码=(1000 0000 0000 0000),后面回给出证明...

沧源佤族自治县15034807883: 注:数0的补码表示是唯一的: +0的补码=+0的反码=+0的原码=00000000- 0的补码=11111111+1=00000000(mod 2 -
蒙张赛克: 在数学上,正0 和负0都是0,是同一个数.数学上也把所有整数看作是正数、零、负数.可以看出零与符号无关. 计算机上正0和负0都用相同的表示,正是为了避免出现混乱.

沧源佤族自治县15034807883: 计算机组成原理补码1.0000和10000的原码分别是什么?要详细解释 -
蒙张赛克: 1.0000和10000本就是原码. 8位字长纯小数,第一位为符号位,小数点在第一位后面,后七位为具体数值,如: -0.1001原码表示为1.1001,反码为1.0110,补码为1.0111;-1的补码为1.0000000. 若数据x的形式为x=x0.x1x2…xn(其中x0为符...

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

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