首页 » InfoTech »

计算机数据的机器级表示

2017年5月19日 / 62次阅读
计算机

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

数据是计算机的处理对象,计算机内只能处理离散数据。

计算机内部所有数据都用2进制表示,这一点没有疑问,不过这一点背后有一个原因,即制造只有两种稳定状态的物理器件相对更容易,而且价格也更便宜。最早的计算机,第一台不可编程计算机ABC第一台可编程计算机ENIAC,都是使用电子管构造而成的。后来有了晶体管,再后来是集成电路IC,都没有改变两种稳定状态的物理器件这一原则。

计算机内的数据分成两种:(1)数值数据,表示一个具体的数值大小;(2)非数值数据,比如用一个byte表示ASCII编码,以及更复杂的各种文字编码等,CPU的ISA对应的操作码也是二进制表示的非数值数据。因此,所进入计算机的数据,都要经过编码,都是二进制数据,只是表示的含义各不相同。

 

关于非数值数据,本小站有如下文章可供学习参考:

序列化和反序列化(及各种编码)

UTF-8编码和字节序

什么是UTF-8 without BOM?

计算机系统通用的字符编码

 

数值数据分为:整形数(分有符号和无符号),浮点数(都有符号),或者说整数和实数。

计算机通过定点数来表示所有的数值:(1)定点整数,小数点固定在最后边,计算机内不可表示;(2)定点小数,小数点固定在最左边;(3)浮点数通过一个符号位,一个定点小数,和一个定点整数来组合表示,浮点数的基(数制)也是通过约定的方式在计算是保持一致。

计算机的计算可以分为:(1)数值计算,即各种科学计算;(2)非数值计算,我们大学学的数据结构这本书,主要就是介绍非数值计算的各种常用算法,操作系统的设计也涉及大量非数值计算算法。这两种计算有不同的应用领域,但也常常组合起来完成各种复杂工程。

定点数在计算机内的表示方法有多种:原码,补码,反码,移码。详细说明如下:

原码很直观,但有两个缺点:(1)0的表示不唯一;(2)原码加减运算规则复杂。在进行原码加减运算过程中,要判定是否是两个异号数相加或两个同号数相减,若是,则必须判定两个数的绝对值大小,根据判断结果决定结果符号,并用绝对值大的数减去绝对值小的数。现代计算机中,不用原码来表示整数,只用其来表示浮点数中的定点小数,即尾数部分。

补码表示就可以实现加减运算的统一,即用加法来实现减法运算。正数的补码是它本身,负数的补码等于模与该负数绝对值之差。现代计算机中,用补码来表示定点整数,对于无符号数,都是正数,其表示结果相当于原码,8个bit可以最大表示到255。对于有符号整数,8bit的情况下,可以表示-128到127。(符号位在最前面,0表示正,1表示负,因此最大的数是127,-128的补码表示为b10000000,这时,我理解,0的表示唯一了!)

C语言在进行两个整数运算的时候(各种运算),如果有一个是无符号数,代码会自动将另一个数也当做无符号数来使用(将内存中的bit位按照无符号数来解释使用),计算结果也是无符号数。

反码很少被使用,也有很多缺点。

移码浮点数,用定点整数表示阶码(指数),这个阶码,一般情况下,就是用移码来表示的。(固定加上一个正常数,方便相互之间的比较)

浮点数的知识,麦新杰准备单独开一篇文章来记录学习收获。请参考:IEEE 754 浮点数标准

本文链接:http://www.maixj.net/ict/shuju-15361
云上小悟 麦新杰(QQ:1093023102)

评论是美德

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top