参加了软考之后,第一次接触到了计算机系统知识的内容,其主要介绍了计算机的结构组成,以及计算机的原理,都是一些很抽象的东西。
大家都知道计算机中的运算都是通过二进制进行的,但是由于计算机中只有加法运算器,所以在进行减法运算往往会出错,这也就要求我们要把减法运算转化为加法运算。于是就出现了各种码。
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
原码是人脑最容易理解和计算的表示方式.
PS:另一种原码转换为补码的简便方法:数值部分自低位向高位搜索,第一个1以及其右的各位0保持不变,第一个1左边的各位按位取反。
补码:解决负数加法运算正负零问题,弥补了反码的不足。
移码的表示方法:不管正负数,只要将其补码的符号位取反即可。
[+1] = [00000001]原 = [00000001]反 = [00000001]补=[10000001]移
[-1] = [10000001]原 = [11111110]反 = [11111111]补=[01111111]移
总结:
1、正数的原码、补码、反码均为其本身;
2、负数(二进制)的原码、补码、反码公式:
反码 = 原码(除符号位外)每位取反
补码 = 反码 + 1
反码 = 补码 - 1
移码 = 补码符号位取反
3、二进制数中,两数的补码之和等于两数和的补码。
原文地址:http://blog.csdn.net/u010168160/article/details/45599677