Loading... #原码,补码&反码 --------------- > 以下皆以C++char的存储(8位二进制位存储) - 原码 原码=**符号位+值** ***e.g.***: ```xml 8的原码=00001000; -8的原码=10001000; ``` --- - 反码 ~baike:~ 反码通常是用来由原码求补码或者由补码求原码的过渡码! 反码=二进制位对每一位取反 ```xml 8的反码=11110111; -8的反码=01110111; ``` --- - 补码 **baike:** 假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨2小时,即8-2=6;另一种是顺拨10小时,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。若用一般公式可表示为:a-b=a-b+mod=a+mod-b。对“模”而言,2和10互为补数。实际上,以12为模的系统中,11和1,8和4,9和3,7和5,6和6都有这个特性,共同的特点是两者相加等于模。对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111,若再加1成100000000(9位),但因只有8位,最高位1自然丢失。又回到了 00000000,所以8位二进制系统的模为 。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码 --- 1. 正数 补码=原码; 2. 负数 补码=相反数的反码+1; 3.0 补码=0; ```xml 8的补码=00001000; -8的补码=11110111+1=11111000; ``` 参考资料: [反码_百度百科](https://www.brokenpoems.xyz/index.php/go/006/ "反码") [补码_百度百科](https://www.brokenpoems.xyz/index.php/go/007/ "补码") [原码_百度百科](https://www.brokenpoems.xyz/index.php/go/008/ "原码") 最后修改:2022 年 10 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏