计算机的原码,反码,补码是怎么回事?可以举例说明吗?
原码、反码和补码是计算机中对数字二进制的三种表示方法。
1、原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
例如:用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011。
2、反码
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码的表示方法是:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为1。
例如:
[+7]反= 0 0000111 B;
[-7]反= 1 1111000 B。
3、补码
正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
例如:
[+7]补= 0 0000111 B;
[-7]补= 1 1111001 B。
扩展资料
原码、反码、补码的转换方法如下:
(1) 已知原码,求补码。
例:已知某数X的原码为10110100B,试求X的补码和反码。
首先通过原码的首位确定该数字的正负,若为正数,反码与原码相同,补码比原码在末尾加1;若为负数,求其反码时,符号位不变,数值部分按位求反;求其补码时,再在其反码的末位加1。
(2)已知补码,求原码。
按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法。
百度百科-反码
百度百科-补码
百度百科-原码
计算机中,使用 1、0 构成各种代码。
对于正负数字,只是使用补码来存储与计算。
原码反码,在计算机中,都是不存在的。
补码的编码规则如下:
十进制数字 0,其补码就是:0000 0000。
-1,就是“零减一”,即:0000 0000-1。
用二进制减法计算,可得:(1) 1111 1111。
机器数,只有 8 位,即:1111 1111 = 255(十进制)。
这就是-1 的补码。
继续减一,可得-2 的补码:1111 1110=254。
同理,-3 的补码是:1111 1101 = 253。
。。。
求负数补码的通用公式:-X 的补码=256-X。
(其中的 256,是 2 的 8 次方。可用十进制计算,有需要再转二进制。)
正数,不需要变换。
这就是补码的编码规则。
由此可见,补码,与原码反码毫无关系。
计算机中,也并不使用原码和反码。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!