--------------------------------------------------正文内容开始----------------------------------------------------------
本文由徐溪鸿贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
C++程序设计 程序设计
第1章 计算机基础知识与基本操作 章
1.1* 计算机的发展与应用 略,自学 计算机的发展与应用(略 自学)
1.1.1 计算机的过去、现在与未来 计算机的过去、 1.1.2 计算机的特点、分类与应用 计算机的特点、
1.2 数制
1.2.1 数制的基本概念及常用数制 1. 数制的基本概念 什么是数制?简单地说,数制就是用一组固 定的数码和一套统一的规则来表示数值的方法。 数制也称计数制。人们在日常工作和生活中,经 常使用不同的数制。例如十进制,使用10个数码 (0,1,2,3,4,5,6,7,8,9)并按照逢十 进一的规则进行计数;钟表计时采用60秒等于1 分、60分等于1小时的六十进制;在计算机中使 用仅有0和1两个数码的二进制。可见,数制的种 类是多种多样的。
在一种数制中所使用的数码的个数称为该数制 的基数。 的基数。例如,十进制使用10个数码,基数为10; 二进制使用两个数码,基数为2;十六进制使用16 个数码(0,1,2,3,…,9,A,B,C,D,E, F),基数为16。不难看出,每一种数制中最小的 数码都是0,而最大的数码都比基数小1。 既然有不同的数制,那么在给出一个数时就必 须指明它属于哪一种数制。不同数制中的数可以用 下标或后缀来标识。 例如,二进制数1011可以写 成(1011)2或1011B;十六进制数3A6F可以写成 (3A6F)16或3A6FH;十进制数12.5可以写成(12.5)10 或12.5D,但通常不必用下标或后缀进行标识,直 接写成12.5即可,因为人们已经习惯了这种写法。
各种数制有一个共同的特点,即在一个数 中,同一个数码处于不同位置则表示不同的 值。例如,十进制数131.18中有3个数码1, 它们所表示的值从左到右依次是100、1和0.1。 该数可表示为:
131.18=1×102+3×101+1×100+1×10–1+8×10–2
我们把以基数为底的整数幂称为位权。 我们把以基数为底的整数幂称为位权。 从小数点开始,整数位的位权依次是100、101、 102等,而小数位的位权依次是10–1、10–2、 10–3等。上式称为按权展开式 按权展开式。 按权展开式
同理,二进制数1010.1B的按权展开式为: 1010.1B=1×23+0×22+1×21+0×20+1×2–1 可见,每一位的位权都是以基数2为底的 整数幂,而每一位的值都等于该位上的数码 与该位位权的乘积。
可见,任意一个具有n位整数和m位小数的 R进制数N的按权展开式为: (N)R =an–1×Rn–1+an–2×Rn2+… +a2×R2+a1×R1+a0×R0+a–1×R–1+… +a–m×R–m
=
i=? m n ?1
∑a
i
×R
i
其中ai为R进制的数码。
不难看出,以上几种数制的共同特点是: ? 每一种数制都有一个固定的基数R (Radix),并且按照“逢R进一”的规则进 行计数。 ? 每一种数制都有自己的位权,每一位的位
权都是以基数为底的整数幂。
2. 常用数制 计算机领域中常用的数制有4种:即十进制、 十进制、 十进制 二进制、 八进制和十六进制。关于十进制大 二进制 、 八进制和十六进制 家早已熟悉。二进制是计算机中使用的基本 数制,由于数值较大的二进制数的位数很多, 给书写和阅读带来不便,所以经常用十六进 制数或八进制数表示,我们可以把八进制和 十六进制看成是二进制的压缩形式。表1-2列 出了常用4种数制中的数码、基数、位权及后 缀。
种数制中的数码、 表1-2 4种数制中的数码、基数、位权及后缀 种数制中的数码 基数、
数制 十进制 二进制 八进制 数码 0, 1, 2, 3,…, 9 0, 1 2 10i D 2i B 0, 1, 2, 3,…,7 8 8i Q 十六进制 0, 1, 2, 3,…, 9, A ,B, C, D E, F 16 16i H
基数 10 位权 后缀
二进制、 表1-3 二进制、八进制与十六进制位权的值
i 2i 5 4 3 2 1 0 -1 -2
32
16
8
4
2
1
0.5
0.25
8i
4096
512
64
8
1
0.125
16i
65536
4096
256
16
1
0.0625
1.2.2 不同数制之间数的相互转换 1. 非十进制数转换成十进制数 非十进制数转换成十进制数的方法是将非十 进制数按权展开求和 按权展开求和。 按权展开求和 【例1-1】将二进制数(1011.1)2 转换成十进制数。 (1011.1)2 = 1×23+0×22+1×21+1×20+1×2–1 = 8+0+2+1+0.5 = 11.5
【例1-2】将八进制数(257)8转换成十进制数。 (257)8 = 2×82+5×81+7×80 = 128+40+7 = 175 【例1-3】将十六进制数(2CF.4)16转换成十进制数。 (2CF.4)16 = 2×162+12×161+15×160+4×16–1 = 512+192+15+0.25 = 719.25
2. 十进制数转换成非十进制数 十进制数转换成非十进制数的方法是:整 数之间的转换用“除基取余法 除基取余法”;小数之间 除基取余法 的转换用“乘基取整法 乘基取整法”。 乘基取整法
【例1-4】将十进制数26转换成二进制数。 将十进制整数26连续除以基数2,直到商等 于0为止。然后,将每次相除所得到的余数按 倒序从左到右排列: 2 26 余数 2 13 ………… 0 低位 2 6 ………… 1 2 3 ………… 0 2 1 ………… 1 0 ………… 1 高位 转换结果是:26=11010B。
【例1-5】将十进制数26.125转换成二进制数。 首先将整数部分26按上述方法转换为二进制数 11010B;再将小数部分0.125连续乘以基数2,直 到小数部分等于0为止。然后,将每次相乘所得 到的整数按正序从左到右排列: 0.125 整数 × 2 二进制小数首位 0 ………… 0.250 × 2 0 ………… 0.500 × 2 二进制小数末位 1 ………… 1.000 转换结果是:26.125=11010.001B。
【例1-6】将十进制数0.43转换成二进制数。 0.43为纯小数,转换成二进制数采用“乘 基取整法”。在运用该方法的过程中,应注 意每次只将小数部分乘以基数,而不能将积 的整数部分乘以基数,我们可以认为整数部 分已经被取走。算式如下:
0.43 × 2 0 ………… 0.86 × 2 1 ………… 1.72 0.72 (整数部分已取走) × 2 1 ………… 1.44 0.44 (整数部分已取走) × 2 0 ………… 0.88 不难看出,再继续乘下去,小数部分也不会等于0。这 时可根据计算精度的要求在适当的位数上截止。例如,取 4位小数,得到一个近似值0.0110B。此例表明,某些十进 制小数不能精确地用二进制小数来表示。
3. 非十进制数之间的相互转换
表1-4 4种数制中数的对应关系 种数制中数的对应关系 十进制 0 1 2 3 4 5 6 7 8 二进制 0 1 10 11 100 101 110 111 1000 八进制 0 1 2 3 4 5 6 7 10 十六进制 0 1 2 3 4 5 6 7 8
表1-4续 4种数制中数的对应关系 续 种数制中数的对应关系 十进制 9 10 11 12 13 14 15 16 17 18 二进制 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 八进制 11 12 13 14 15 16 17 20 21 22 十六进制 9 A B C D E F 10 11 12
3. 非十进制数之间的相互转换 表1-4列出了4种数制中数的对应关系。从表中 可以看出,1位八进制数对应 位二进制数,而1 位八进制数对应3位二进制数 位八进制数对应 位二进制数, 位十六进制数对应4 位二进制数。 位十六进制数对应 位二进制数。因此,二进制 数与八进制数之间、二进制数与十六进制数之间 的相互转换便十分容易。 八进制数转换成二进制数的方法是:将每一 将每一 位八进制数直接写成相应的3位二进制数 位二进制数。 位八进制数直接写成相应的 位二进制数。反之, 二制数转换成八进制数的方法是:以小数点为界, 以小数点为界, 以小数点为界 向左或向右将每3 位二进制数分成一组, 向左或向右将每 位二进制数分成一组,若不足 3位,则用 补足 位。然后,将每一组二进制数 补足3位 然后, 位 则用0补足 直接写成相应的1位八进制数 位八进制数。 直接写成相应的 位八进制数。
【例1-7】将八进制数(714.5