计算机组成原理学习笔记——数的表示(1)

  • 计算机中的数均存放在寄存器中,这些数从表现形式上可以分为有符号数和无符号数。

一、无符号数

  • 所谓无符号数的“无符号”指的是没有“+”和“-”两种符号。
  • 对于无符号数,在计算机中表示比较容易,只需将数从其他进制转换为二进制表示即可,并且由于无符号,所以寄存器中的每一位都可以用来存放数据,不用像表示有符号数那样留出一位用于表示符号。
  • 由于寄存器的位数通常直接与机器字长相等,因此知道了机器字长便能知道计算机在无符号数方面上的表示范围:0~(2^(机器字长)-1),例如 16 位,则无符号数的表示范围为:0 到65535.

二、有符号数

  • 有符号数在计算机中的表示方法不唯一,但统一的是都要留出一位用作符号位。因此,在机器字长一样的情况下,有符号数的表示范围要比无符号数的小,一般有符号数的表示范围为:-(2机器字长-1)~2机器字长-1-1;例如,同样机器字长为 16 位,有符号数的表示范围是-32768 到 32767.
  • 有符号数在计算机中有四种表示方法:原码、补码、反码和移码

1、机器数与真值

  • 在开始学习有符号数的表示方法之前,了解一下机器数与真值的概念。
  • 对于符号数而言,符号的“正”与“负”机器是无法识别的,通常用“0”表示“正”,“1”表示“负”,并放置在有效数的前面组成符号数,例如:
    在这里插入图片描述
  • 因此,把符号“数字化”的数称为机器数,而把带“+”或“-”符号的数称为真值。

2、原码

  • 原码是机器数中最简单的一种表示形式,符号位位0表示正数,符号位为1表示负数,数值位即正值的绝对值,故原码表示又称为带符号的绝对值表示。
  • 为了书写方便以及区别整数和小数,约定整数的符号位与数值位之间用逗号隔开,小数的符号位与数值位之间用小数点隔开。
  • 因此上面的 4 个数的原码分别为 0.1011、1.1011、0,1100、1,1100
  • 原码的数学定义如下:
    在这里插入图片描述
  • 0 在原码中有两种表示:
    在这里插入图片描述

3、补码

  • 补码的学习需要建立在补数的基础上,而对补数的理解需要《初等数论》的铺垫,由此可见要真正学号计算机,数学是不能太差的。对于补数的概念,可以点开百度百科·补数这个链接去简单了解下。
  • 对于补数有如下结论:
    1)一个负数的补数可以用它的正数来代替,而这个正补数可以用模加上负数本身求得。
    2)一个正数和一个负数互为补数时,它们的绝对值之和即为模数。
    3)正数的补数即该正数本身。
  • 补码的相关定义如下图:
    在这里插入图片描述
    在这里插入图片描述
  • 对于负数的补码计算,除了按照上面那种用二进制数去计算,还可以用我们熟悉的十进制数计算,-1101 对应十进制的 -13,而 100000 则是 32,32-13=19,而 19 的二进制表示正是 10011,计算出来只需记得在最高位后面价格逗号即可,这是整数的补码,小数的补码如下:
    在这里插入图片描述
  • 同样的 0 在补码中也有两种表示方式。

4、反码

  • 首先来看看反码的数学定义:
    在这里插入图片描述
  • 小数反码 在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 反码的“反”,是针对原码除符号位外的每一位而言的,因为原码出符号位外每一位取反正好就是反码。因此有下面的结论。

5、就原码、补码和反码的结论

  • 1)三种机器数的最高位均为符号位。符号位与数值部分之间如果是整数就用逗号隔开,如果是小数就用小数点隔开。
  • 2)当真值为正时,原码、补码和反码的表示形式均相同,即符号位用“0”表示,数值部分与真值相同。
  • 3)当真值为负数时,原码、补码和反码的表现形式不同,但其符号位都用“1”表示,而数值部分有这样的关系,即补码是原码的“求反加1”指的是用原码的出符号位外的每一位取反(0变成1,1变成0)并在最末位加1;反码是原码的“每位求反”,指的是用原码除符号位外的每一位取反。例如:x=-1101,则原码=1,1101,补码=1,0011,反码=1,0010;当 x=-0.0110,则原码=1.0110,补码=1.1010,反码=1.1001。
    在这里插入图片描述

6、移码

  • 先看看移码表示法的定义:
    在这里插入图片描述
  • 可以看出移码就是在真值上加上一个常数 2n,在数轴上就是真值往正方向移动了 2n 个单位,如图:
    在这里插入图片描述
  • 对于移码,仍然使用逗号将符号位和数值隔开。另外,移码是目前使用最广泛的,因为不同两外三种机器数,移码本身就可以看出真值的大小;与另外三种机器数还有一个不同的地方就是,移码对“0”的表示是唯一的:
    在这里插入图片描述
  • 移码与补码具有一定联系,体现在:同一个真值的移码和补码仅差一个符号位,若将补码的符号位由“0”改为“1”,或从“1”改为“0”,即可得到该真值的移码。
    在这里插入图片描述

上一篇
下一篇

发布了184 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/104466390