机组笔记之计算机运算方法(1)

计算机组成原理章节图

本文用来介绍无符号数和有符号数。

计算机中数的表示指的是能够被计算机硬件直接识别和处理的数据, 在计算机中所有的数以补码的形式保存。
本文解决以下几个问题:

  • 在计算机中数是怎样被保存起来的?
  • 补码形式保存计算机的数有什么优势? 或者说为什么要用补码来保存计算机的数?





1.无符号数

(1)范围:0-255
8个bit的寄存器表示的无符号数的范围是0-255

范围:0-65535
16个bit表示的无符号数的范围是0-65535

2.有符号数

  • 先来区别两个概念: 真值和机器数。
    • 真值就是人们一般的数字表达,比如说 -1001, -0001 等等。
    • 机器数顾名思义就是在计算机中数字的表达方式, 最明显的区别为了适应计算机只能识别 0 和 1 的特点将符号用 0 或者 1 来表达, 也就是符号数字化的数。表达形式有:原码、 补码、 反码和移码。 你比如上面两个数用表达为机器数中原码就是 1,1001 、 1,0001。
  • 注意:无论是 “,” 或者是之后的 “.” 都是人为添加方便人们来查看的, 在计算机中是没有他们的存在, 而是小数点是事先约定的。
    真值和机器数

3.原码

(1)概念:根据上图我可以看到符号数字化能给出一种机器数的表达方式,这种数称为原码表示法。
(2)表示范围

  • 整数:
    在这里插入图片描述
    这个范围最好理解:就是简单的符号数字化的表示。
  • 小数:
    在这里插入图片描述
    小数的范围也同样。

(3)原码的优缺点

  • 优点:简单, 直观, 符号数字化
  • 缺点:
    原码中0的表示

可以看到 0 的表示在原码中不是唯一的, 这给计算机造成了困难。 它的优点也正好是它的第二个缺点:
符号数字化使得 它在用原码做运算的时候加减法会给计算机运算带来很大麻烦, 因为计算机中只有加法器。





4.计算机中加法器的简单介绍

(1)计算机中的三种门电路

  • “与” 门:
    与门电路
  • “或” 门:
    或门电路
  • “非门” :
    非门电路

(2)通过以上 3 种电路组合而成的电路。

  • “与非” 门电路:由与门非门组成。
  • “异或” 门电路:能实现模为2的加法,因此,异或门可以实现计算机中的二进制加法。异或门电路图

(3)半加法器的实现:

我们来看百度百科的解释:
半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。 是实现两个一位二进制数的加法运算电路。

在这里插入图片描述

要想完成高位和低位进位相加需要实现全加法器, 这里不再解释。
我们可以看到, 计算器中只认加法, 所以只用原码这种表示方法肯定不行。 得用一种能够加法来实现减法的数的表示方法。 这就是补码。




5.补码

(1)补码的本质
补的本质

  • 假如现在有一个数, 大小是 4 。 完成下面两个表达式:

4 - 3 :第一种方式当然是直接减, 但我们已经分析过了这种方式在计算机内不能实现。
第二种方式采用补码相加, 让 4 丢掉 3, 我们可以利用计算机的缺点, 因为计算机本身有位数限制, 所以 4 + 13 第 5 位溢出, 丢掉。 就剩下 0001 , 减法完成。

4 - 11 :结果当然是 -7 , 但是计算机内是补码形式 9 。怎么来的呢? 假设计算机自己能够识别正负数, 那么表达范围是 -15-15, 你超过这个数的范围我是表达不出来的, 对应表盘上就是能顺时针的转一圈, 也能逆时针的转一圈。4 - 11就以为着你让我逆时针拨11下, 结果当然是 -7 。 但我们说了, 计算机不会减法。 所以另一种方式就是:你不如让我顺时针拨个 5 结果就成了 9 。那我要是用编程语言输出来, 你不能给我显示个补码吧, 所以还有一位符号位用来区分正负。

补码通俗的理解就是: 把数的范围围成一个圆盘, 我不会逆时针旋转, 我只会顺时针转, 但有办法用顺时针旋转代替逆时针旋转的效果, 也就是补数, 而且我还能记录你是不是用顺时针完成可逆时针的效果(负数)。

(2)补码的定义
补码中整数和小数的表示范围
(3)求补码的方式:
根据定义求。
数值位取反末尾+1。
(4)关键的几个真值的补码:
补码表示

6.移码
(1)定义:补码很难判断大小, 所以将真值统一加上2的N次, 放在同一起跑线上比较。
(2)性质:和补码只差一个符号位
(3)作用:通常用来表示浮点数据类型的阶码部分。

划重点

补码运算算术说明情景说明
a+ba、b均为正数 ,但不超过所要求范围1.a+b没有溢出,正常相加得到结果
2.a+b有溢出,符号位为负数,结果错误
a-ba绝对值大于b1.a+(-b补数)绝对有溢出,结果正确且为正数
a-ba绝对值小于b1.a+(-b补数)绝对没有溢出,结果正确且为负数
-a-ba、b均为正数,但不超过所要求的范围1.补数相加有溢出,正常相加得到结果
2.补数相加没有溢出,结果错误

本文参考:
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1537679737088&di=bd6a3fe1fceeb514bc51eccecd414a5f&imgtype=0&src=http%3A%2F%2Fe.hiphotos.baidu.com%2Fzhidao%2Fwh%3D450%2C600%2Fsign%3D03947a1a0c55b3199cac8a717699ae10%2Fa9d3fd1f4134970a9c19263493cad1c8a7865d46.jpg
百度百科相关词条

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值