关于原码、反码和补码的介绍及转化关系
计算机中的符号数有三种表⽰⽅法,即原码、反码和补码。三种表⽰⽅法均有符号位和数值位两部分,是计算机中对数字的⼆进制定点表⽰⽅法。符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位,三种表⽰⽅法各不相同。下⾯依次介绍并给出相互的转换关系:
原码:
简单直观;例如,我们⽤8位⼆进制表⽰⼀个数,+11的原码为00001011,-11的原码就是10001011。但参加运算可能出错。例如数学
上,1+(-1)=0,⽽在⼆进制中,00000001+10000001=10000010,换算成⼗进制为-2,显然出错了。
反码:
反码通常是⽤来由原码求补码或者由补码求原码的过渡码。反码跟原码是正数时,⼀样;负数时,反码就是原码符号位除外,其他位按位取反。
补码:
在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀处理;同时,加法和减法也可以统⼀处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
1、⼀个负整数(或原码)与其补数(或补码)相加,和为模。
2、对⼀个整数的补码再求补码,等于该整数⾃⾝。
负75的补码怎么求3、补码的正零与负零表⽰⽅法相同。
总之,正整数的补码是其⼆进制表⽰,与原码相同。求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
即正整数的原码反码补码⼀样;负整数的反码是除了原码符号位其他位全部取反,补码是反码加⼀。
转换:
由于正数的原码、补码、反码表⽰⽅法均相同,不需转换,所以仅以负数情况分析。
(1)已知原码,求补码。
例:已知某数X的原码为10110100,试求X的补码和反码。
解:由[X]原=10110100知,X为负数。求其反码时,符号位不变,数值部分按位求反;求其补码时,再在其反码的末位加1。
1 0 1 1 0 1 0 0 原码
1 1 0 0 1 0 1 1 反码(符号位不变,数值位取反)
1 1 0 0 1 1 00 补码(补码再加⼀)
故:X的补码=11001100,X的反码=11001101。
(2)已知补码,求原码。
分析:按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。但是对⼆进制数来说,先减1后取反和先取反后加1得到的结果是⼀样的,故仍可采⽤取反加1 有⽅法。
例:已知某数X的补码11101110,试求其原码。
解:由X的补码=11101110知,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 原码(符号位不变,数值位取反)
即为所求。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论