一,真值
就是现实中的数字(二进制)必须有+/-,实际中整数舍弃了+。spa
eg:+1101010001 -1010001111
二,原码
计算机中惟一标识一个真值,可是不能用于计算以及没法实现减法,会产生二异性(+0,-0)code
求法:正数的原码是其补全位数后前面加0,负数的原码是是其补齐位数后去掉-,在前面加1blog
eg:
真值:+10000101 -10101100
原码:010000101 110101100
三,补码
用于解决计算机没法实现减法以及原码的没法惟一标识class
求法:正数的补码是其补全位数后前面加0,负数的补码是是真数去掉-,从右到左找到第一个1左边取反,在前面加1原理
eg:
真值:+1010111 -1110101 -101010100
补码:01010111 10001011 1010101100
四,反码
到目前为止我还不知道有啥用-过渡反正我觉的很鸡肋二进制
求法:真值的反码是其补全位数后前面加0,负数的反码是其补码-1im
eg:
真值:+1010111 -1110101 -101010100
反码:01010111 10001010 1010101011
五,移码
用于解决补码没法比较大小的做用总结
求法:补码符号位取反db
eg:
真值:10100 -10100
移码:1,10100 0,01100
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SY5UTYhVWMzIjZwcjN0QjYzQGO0MGNmdDOihjMzgTOh9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
六,特殊码(负数+临界)求法(定义法)
eg: 10000000(补码)
-128(真值)
1,补码1开头,确认负数 100000000
2,真值=补码-2^n+1(n为整数位数) 100000000-2^(7+1)= -1000000000 = -100000000 = -128
10000000(原码)
-0(真值)
1,10000000 = -0(真值)--- 直接变换
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SY5UTYhVWMzIjZwcjN0QjYzQGO0MGNmdDOihjMzgTOh9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SY5UTYhVWMzIjZwcjN0QjYzQGO0MGNmdDOihjMzgTOh9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
七,总结
1,若是真值大于0,其原码,补码,反码都同样img
2,本人所写为本人认为最简求法,省略了大部分原理,详细请参考计算机组成原理