原码反码补码这种东西,前前后后也学了三四次了。但是呢,就是一看就明白,过几天就忘,索性写个博客复习一下。
源码是这三个当中最简单的一种了。它用最高位表符号,其余位是 数据的二进制表示方法。(1表示负,0表示正)
所以0000和1000 分别表示 正零 和 负零
此时我们可以简单的运用一下
0001 + 0010 = 0011 1+2=3 可以
0001 +1010 = 1011 1011 ???? 1+(-2)=-3
在面对减法运算时,计算机还是有自己的缺陷
源码中,一个数字加上自己的相反数 0001 + 1001 = 1010 答案错误
于是反码的设计思想就是冲着解决这一点,既然一个负数是一个正数的相反数,那我们干脆用一个正数按位取反来表示负数试试。
反码:正数的反码还是等于原码;负数 的反码就是他的原码除符号位外,按位取反。
使用复数相加 -1+ -2
1001 反码 1110 1010反码1101
1110+1101 = 1011 -4???? 出现了新的错误
反码能解决正数加复数的问题 但是解决不了复数加复数的问题,所以还得想办法
补码
负数的补码等于他的原码自低位向高位,尾数的第一个‘1’及其右边的‘0’保持不变,左边的各位按位取反,符号位不变。
要想理解补码就要理解模的概念,比如日常使用的圆盘表
11 和 -1 的感觉 。有点不知道怎么讲了。还不懂得话就去自行百度模的概念。
正数的补码 就是原码 复数的补码是其反码加1 或者参考上述 方法。