设计计算机的最初目的是进行数值计算,计算机中首先表示的数据就是各种数字信息。随着应用的发展,现在计算机数据以不同的形式出现,如:数字、文字、图像、声音和视频等。但是,在计算机内部,这些数据形式还是以数字的形式存储和处理的。
通过使用数字对各式各样的信息按照一定的规则进行编辑,最终变换为计算机易于识别的信息,这个过程称为数字化编码。用少量最简单的基本符号,对大量复杂多样的信息进行一定规律的组合。
编码的两大基本要素:
基本符号的种类(例如二进制的“0”和“1”)
组合规则
现代计算机内部采用二进制符号进行信息编码。
任何一个二进制数N都可以表示为
N=S·2^E
其中E是一个二进制整数,称为数N的阶码,2为阶码的基数,S是二进制小数,称为数N的尾数。E和S可正可负。尾数S表示数N的全部有效数据,阶码E指明该数的小数点位置,表示数据的大小范围。
整数是没有小数部分的整型数字。
例如:123、4、-56、0等都是整数,而1.34则不是整数。
计算机中整数的分类:
无符号整数:不区分正负的正整数。
有符号整数:最高位表示正负的整数。
2.1 整数的原码、反码和补码
2.1.1 整数的原码
所谓原码是用一个数的最高位存放符号(0为正,1为负),后续的其他位与数的真值相同的数据表示方法。
2.1.2 整数的反码
用最高位存放符号,并将原码的其余各位逐位取反。反码的取值空间和原码相同且一一对应。
2.1.3 整数的补码
在补码表示法中,正数的补码表示与原码相同,即最高符号位用0表示正,其余位为数值位。而负数的补码则为它的反码、并在最低有效位加1所形成。
我们在使用程序设计语言设计程序中使用的是数据的原码,而数据在计算机中是以补码的形式存在的。
2.1.4 三种编码的比较
a 三种编码(原码、反码、补码)的最高位都是符号位。
b 当真值为正时,三种编码的符号位都用0表示,数值部分与真值相同。即它们的表示方法是相同的。
c 当真值为负时,三种编码的符号位都用1表示,但数值部分的表示各不相同,数值部分存在这样的关系:补码是原码的“求反加1”(整数),或者“求反末位加1”(小数);反码是原码的“每位求反”。
c 它们所能表示的数据范围基本一样。
区别:在于对负数的表示方法有所不同。
2.2 整数算术运算的方法
以补码的形式进行运算。
实数是带有整数部分和小数部分的数字。
例如:1.23、3.4、0.56等都是实数。
实数小数点位置不固定,所以称浮点数。它是既有整数又有小数的数,纯小数可以看作实数的特例。
在计算机中采用浮点表示法(通常采用IEEE754标准)来表示实数。
3.1 实数的格式
为了使表示法的固定部分统一,科学计数法(用于十进制)和浮点表示法(用于二进制)都在小数点左边使用了唯一的非零数码。这称为规范化。
计算机表示实数时,只存储实数的三部分信息:符号,指数,和尾数(小数点右边的位)。小数点和定点部分左边的位1并没有存储——他们是隐含的。
例如,一个实数1000111.0101规范化后变成为:2^6×1.0001110101,
在计算机中表示为: