计算机码制深入理解——原码

计算机码制深入理解——原码

序言

计算机的码制是学习计算机原理的基础。但在学校的学习中,老师大多只简单讲解不同码制之间的变换方法,至于为什么这样却不得而知。只知其然,不知其所以然。这样显然不利于我们更深入的去学习计算机运算器。那么,本系列的博文便尝试用=深入理解原码、反码、补码、移码。为了讨论的方便,采用有符号定点整数来说明。由于博主知识有限,有错误之处还请不吝赐教。


基础储备

1. 假设计算机中采用n+1位(bit)来表示现实中的一个数。
2.机器数(computer number):数字在计算机中的二进制表示形式,即计算机n+1位中实际保存的01序列。
3.机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制。
4.真值:机器数对应于我们真正想表达的数值。举例说明,如果n+1 = 8,第8位为符号位,1表负,0表正。我们想把-8存进去。首先 -8 = -(0000,1000)(2进制) –> (1000,1000),(1000,1000)便是机器数,-8便是对应机器数的真值


原码设计思想

我们知道在计算机中只能存储0和1,一个存储单元假设有(n+1)位,那么正负数该如何表示呢?前人们很聪明,用最高位(n+1位)表示符号,1对应负号‘-’,0对应正号‘+’,自然后面的n位表示数x的量值,即|x|(绝对值)。


原码实现

由上面的设计思想我们可以给出原码的数学表达式如下图所示:

原码公式

我们来解析下这个貌似有点复杂的式子

1.为什么 x 不能大于或等于2^n ? 先给出各位的数量级如下图所示。由于第n+1位为符号位,那么就只剩下n位表示量值。n位二进制数可以表示的真值范围为2^n - 1, 即全为1。故要小于2^n。

这里写图片描述

2. +0和-0。我们可以发现机器数100—000表示真值(-0),000—000表示真值+0。
3.当x本身为正时,由于其小于2^,故最高位自然为0,无需处理。当x为负时,要将最高位置1。即(|x|+2^n)。

我们通过数轴的形式更加直观的来看原码的机器数和其真值之间的关系,如下图所示。
原码数轴

1. 如果将-0和+0视为一个有效数0时,原码共可以表示2^(n+1) - 1个数。
2. 数轴下面为机器数从小到大的循环图


原码优点

1.简单易懂
2.电路容易实现


原码缺点

1. -0和+0的冗余
2. 运算复杂。同号直接相加,异号要先比较绝对值,然后再进行判断符号,电路实现复杂。


参考文献

[1]: 白中英.计算机组成原理(第五版·立体化教材).北京:科学出版社.2013
[2]: 原码、反码、补码的产生、应用以及优缺点有哪些? http://www.zhihu.com/question/20159860

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值