一. 机器数和真值

1、机器数

一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,计算机中,最高位存放符号, 称之为符号位,符号位非负数为0, 负数为1.

2、真值

带符号位的机器数对应的真正数值称为机器数的真值。

十进制中的数 +3的机器数是00000011, 真值是+0000011

十进制中的数 -3的机器数是10000011, 真值是-0000011

二. 原码, 反码, 补码

计算机要使用一定的编码方式存储数据. 原码, 反码, 补码是机器存储一个具体数字的编码方式.

1. 原码

原码就是符号位加上真值的绝对值, 最高位表示符号, 其余位表示值

[+1]原 = 0000 0001
[-1]原 = 1000 0001

8位二进制数的取值范围是[1111 1111, 0111 1111], 十进制表示: [-127, 127]

2. 反码

  • 正数的反码是其本身
  • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [0000 0001]原 = [0000 0001]反

[-1] = [1000 0001]原 = [1111 1110]反

3. 补码

  • 正数的补码就是其本身
  • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补

[-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补

计算机进行加减乘除运算时会将符号位参与运算

反码: 减法(存在 0 和最小位 -128问题)

补码: 减法(perfect)

原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

  • 正数:补码=反码=原码
  • 负数:补码=负数反码+1。
posted on 2020-09-20 10:05  爱IT的小狐狸  阅读(321)  评论(0编辑  收藏  举报