二进制求补码算法 c语言,补码的计算

  • Post author:
  • Post category:其他


对于程序猿或者是其它搞计算机类的人员,这篇只是为了解释一下原码,反码,补码之间的计算和解释上一篇的a + ~a = -1的问题!!!

首先先介绍一下整数在计算机中表示方法,数在计算机中都是用二进制表示,但是字节长度就不一定了,不同的机器可能就不一样

而且在计算机系统中,补码是最重要的编码,数值一律用补码来表示和存储

移码(又叫增码)是符号位取反的补码,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0

整数有正,有负的,所以计算机中为了表示正负,用字节的最高位来表示正负,其它位表示数值

例如大多数计算机体系中,(signed) int 就是一个有符号的数,占4个字节,signed可以不写,默认int就是signed int,另外signed默认也是signed int,不过这样写不规范,不建议这么写,

为了方便演示,下面就以一个字节为例!

正数的最高位是0,负数的最高位是1

正数原码和反码,补码都是一样的,都是正数本身

对于负数

原码是符号位为1,其它位和数本身的正数一样,也就是负数的原码等于其相反数的原码,但是最高位为1即可

反码就是在负数的原码基础上,符号位不变,其余的按位取反

补码就是在负数的反码基础上,符号位不变,加上1即可

4. 从十进制求它二进制的原码,反码,补码就按上面的方法,但是知道