补码原码反码
正数的源码,反码,补码都是相同的
负数源码,反码,补码
- 负数源码和反码的相互转化
符号位不变,数值位按位取反 - 负数源码和补码的相互转化
- 负数原码转化为补码:符号位不变,数值位按位取反,末尾加一
- 负数补码转化为原码:符号位不变,数值位按位取反,末尾加1
3.负数反码和补码的相互转化
- 负数反码转化为补码:末尾加1。
- 负数补码转化为反码:末尾减1(注意,此处的反码是指原码的反码)。
简便方法
负数在计算机中是用补码的形式存储的,正数在计算机中是用原码的形式存储的。
正数求原码直接将十进制转二进制即可,负数的补码是在原码的基础上除符号位外其余位取反后+1。
但是用这种方式求负数补码用编程实现不太方便,下面介绍一种用编程实现起来较简便的求负数补码的方法:
- 求出负数绝对值的原码
- 从原码的最后一位数码位往前数,当遇到第一个1时停在此位置
- 将第一个1前面的数码全部求反
比如:(字长为8位)
求-127的补码: 127的原码: 01111111 -127的补码: 10000001 求-80的补码: 80的原码: 01010000 -80的补码: 10110000 求-1的补码: 1的原码: 00000001 -1的补码: 11111111
这种方式用编程实现起来比较方便,在原码的基础上除符号位外其余位取反后+1的方式要考虑进位。
腾讯云智研发成长空间 5106人发布