计算机的原反补码
* 计算机内: * 原码:计算机中对数字的二进制定点表示方法,原码表示法在数值前面增加了一位符号位(即最高位为符号位):正书该位为0,负数该位为1,其余位表示数值的大小,0有两种表示:+0 和 -0 * 反码:反码是数值存储的一种,多应用于系统环境设置,反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外 * 补码:在计算机系统中,数值一律用补码来表示和存储,补码表示法规定:正数的补码与其原码相同,负数的补码是在其反码的末位加1
补码的加法运算所依据的基本关系为:
[x]补+ [y]补= [x+y]补
补码减法所依据的基本关系式:
[x-y]补 =[x+(-y)]补= [x]补+ [-y]补
求原反补码&计算机做加法的例子:
15 - 27的过程: * 转二进制:00001111 -00011011 * 得到原码: * 00000000 00000000 00000000 00001111 10000000 00000000 00000000 00011011 * 得到反码: * 00000000 00000000 00000000 00001111 11111111 11111111 11111111 11100100 * 得到补码: * 00000000 00000000 00000000 00001111 * 11111111 11111111 11111111 11100101 相加得到: 11111111 11111111 11111111 11110100 * 转反码: * 11111111 11111111 11111111 11110011 * 转原码: * 10000000 00000000 00000000 00001100 * 转二进制: * - 1100 * 转10进制: * - (8 + 4) = -12
参考链接:http://www.cnblogs.com/flowerszhong/p/6798781.html
这里注意:
为什么byte的最小值是-128在使用这种公式法补码的时候无法得到信服的解释。补码就是我们数据在计算机中存储的形态,我们着里得到的只是公式,补码的真正意义看我的另一篇博客:补码的来源以及为什么byte的最小值是-128
有疑问地方欢迎留言。