原码反码补码移码的介绍和计算

1.原码


原码的定义:十进制数据的二进制表示形式就是原码。

(1)原码的最左边那位是符号位,其他位为数据位,符号位是0则为正数,符号位是1则为负数。

(2)一个byte有8bit,最大值是0111111(+127),最小值是11111111(-127)

正数计算:

5+2=7

00000101

+      0010

00000111


2.反码


反码出现的原因:原码用符号位来表示正负,所以负号难以和其他数进行计算,反码出现,作为负数的计算救星。

反码的定义:正数的反码等于本身,负数的反码是符号位保存不变,其余按位取反。比如10000101(-5负数原码)->11111010(反码)。

反码的最大值是0111111(+127),最小值是11111111(-127)

负数计算:10000101(十进制为-5)的反码11111010

-5-1=-6

11111010

-             1

11111001


把11111001转回原码是1000110 刚好为-6。

3.补码


补码的引入:反码也有缺点,如果是负数跨零进行计算的话,计算得出的结果不对,这时候,作为反码的补充编码-补码出现。

补码的定义:正数的补码是本身,负数的补码等于其反码+1。比如10000101(-5负数原码)->11111010(反码)->11111011(补码)。

反码的最大值是+127,最小值是-128

跨零计算:

-5+3=-2

  11111011

+        0011             

  11111110


把11111110【补码】转回原码,对其反码+1得10000010,十进制为-2。

4.移码


移码的定义:正数的移码是本身,负数的移码等于其补码然后对符号位取反。比如10000101(-5负数原码)->11111010(反码)->11111011(补码)->01111011(移码)。

计算:

-5+3=-2

  01111011

+        0011             

  01111110


把01111110【移码】转回原码,对其补码然后对符号位取反得10000010,十进制为-2。

5.原码、反码和补码的数据表示范围:

猜你喜欢

转载自blog.csdn.net/weixin_63357306/article/details/133690168