零的源码是
‘壹’ +0或者-0的源码、反码、补码
答案:
0的源码、反码、补码均为0。
解释:
在计算机中,整数使用二进制形式表示,而源码、反码、补码是二进制数的不同表示方法,尤其在涉及有符号整数的表示时。
对于数字0来说:
1. 源码:即数字原本的二进制形式。对于非负数,源码就是其本身的二进制表示。0的源码就是0000。
2. 反码:在表示负数时,反码是对源码取反,但对于正数或零,其反码与其源码相同。因此,0的反码仍然是0。
3. 补码:补码是计算机中最常用的编码方式,用于表示正数和负数。对于正数和零,其补码与源码和反码相同。因此,数字0的补码也是0。
综上所述,+0或-0在二进制中的源码、反码、补码均为全零的二进制数表示形式。这种设计不仅使正数和零的表示简单直观,还使得计算机在进行运算时更加高效和方便处理各种数学运算和逻辑操作。
‘贰’ +0或者-0的源码、反码、补码
[+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。
(2)零的源码是扩展阅读
转换方法
由于正数的原码、补码、反码表示方法均相同,不需转换。在此,仅以负数情况分析。
(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或者-0的源码、反码、补码分别是什么补码是一样的吗
整数(正整数、负整数、零),是以各种代码,存入计算机的。
要知道,天下,只有一个零。
零,既不是正数,也不是负数。这可是小学的知识。
但是,计算机砖家,硬在零上强加了一个符号位!
于是,在原码反码中,就都为一个零,编造了正负两个代码。
零的原码,有两个:0000 0000、1000 0000。
反码,也是两个:0000 0000、1111 1111。
这些砖家,这就是要“上天”哪!
-------------------
原码和反码,都是重复定义了“零的编码”,这就造成了混乱。
而且,零多占用一组代码,那么,所能表示的数字,必然就少一个。
因此,八位的原码反码,都不能表示-128。
这就导致了:【原码和反码,计算机都无法使用】。
所以,在计算机系统中,数值,一律采用补码来表示和存储。
-------------------
补码的理论,来源于数学的规律,并非是人为的胡编乱造。
0 的八位补码,只有一个,就是:0000 0000。
零,在补码中,只用唯一的一组代码来表示,这就不会产生混乱。
--------------------
求补码,书上介绍的方法,就是:取反加一。
但是,原码反码中,都是没有 0 和-128。
(虽然原码反码都有 +0 和-0,但是它们毕竟不是 0。)
谁再想用“取反加一”,就要 Duang、Duang 的碰壁了。
--------------------
那么,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 (二进制)。
--------------------
如果按照“取反加一”,零的补码,也将是“负零的反码+1”。
那么,[-0 ]补码,就是:0000 0000!
发现有点诡异呀?
-0,不是负数吗?其补码的符号位。怎么是(0)正的!
哪位计算机砖家来解释解释。。。
‘肆’ +0或者-0的源码、反码、补码
[+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。
(4)零的源码是扩展阅读
转换方法
由于正数的原码、补码、反码表示方法均相同,不需转换。在此,仅以负数情况分析。
(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有+0和-0之分
+0的原码(8位):0000_0000
反码、补码同。
-0的原码(8位):1000_0000
反码 :1111_1111
补码 : 0000_0000
相比较起来,原码和反码都有2个表示0的编码。补码都是一样的。
总之,正数的原码、反码、补码一样;
负数的原码就是{符号位1,绝对值原码},反码等于符号位除外的各位取反,补码等于反码加1。
无符号数:最高位不用来表示正负,它没有负数
所以答案是AB
‘陆’ 源码-反码-补码 的转换规则
正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码