补码源码和
⑴ +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 原码(符号位不变,数值位取反)
⑶ 补码是1.0000,它的源码和真值是多少(请写出过程)
补码是 1.0000,它的源码和真值是多少?
---------------------
你的说法,有谬误。应该说:
数值X 的补码是 1.0000,X 的源码和真值是多少?
回答如下:
补码和原码,并非是一一对应的。
你要知道:补码,比原码多一个。
某个特殊的数值,有补码,却没有原码,这是事实。
1.0000,这是定点小数-1.0 的补码。
真值就是:-1.0。
而-1.0 的原码,并不存在。
你要是用“补码的补码”来求原码,就肯定是错误的。
去翻翻书吧,这结论,并没有什么过程,就是一个结论。