负数在计算机中是用补码的形式存储的,正数在计算机中是用原码的形式存储的。
正数求原码直接将十进制转二进制即可,负数的补码是在原码的基础上除符号位外其余位取反后+1。
但是用这种方式求负数补码用编程实现不太方便,下面介绍一种用编程实现起来较简便的求负数补码的方法:
1. 求出负数绝对值的原码
2. 从原码的最后一位数码位往前数,当遇到第一个1时停在此位置
3. 将第一个1前面的数码全部求反
比如:(字长为8位)
求-127的补码:
127的原码: 01111111
-127的补码: 10000001
求-80的补码:
80的原码: 01010000
-80的补码: 10110000
求-1的补码:
1的原码: 00000001
-1的补码: 11111111