C语言进制转换.doc

上传人:sk****8 文档编号:3526585 上传时间:2019-06-02 格式:DOC 页数:4 大小:93.50KB
下载 相关 举报
C语言进制转换.doc_第1页
第1页 / 共4页
C语言进制转换.doc_第2页
第2页 / 共4页
C语言进制转换.doc_第3页
第3页 / 共4页
C语言进制转换.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、c 语言中的进制转换竞赛 2008-10-07 10:48:55 阅读 1111 评论 0 字号:大中小 订阅 1.2 进位计数制及其转换计算机能够处理数值、文字、声音、图像等信息。读者也许会问:为什么作为电子设备的计算机能处理那么多复杂的信息呢?实际上,当把这些信息转换成计算机能识别的形式就能进行处理。目前计算机中所有的信息都用“0”和“1”两个数字符号组合的二进制数来表示。数值、图形、文字等各种形式的信息,需要计算机加工处理时,首先必须按一定的法则转换成二进制数。本节将首先以常用的十进制为出发点,来讨论二进制、八进制及十六进制的特点,然后介绍各种进制数之间的转换方法。1.2.1 十进制数的

2、表示进位计数制是一种计数的方法,习惯上最常用的是十进制计数法。十进制数的每位数可以用下列 10 个数码之一来表示:0、1、2、3、4、5、6、7、8、9。十进制数的基数为 10,基数表示进位制所具有的数码的个数。十进制数的计数规则是“逢十进一”,也就是说,每位累计不能超过 9,计满 10 就应向高位进 1。一般来讲,任意一个十进制数 N,可以用位置计数法表示如下:(N )10 = (an1an2a1a0.a1a2am)10也可以用按权展开式表示如下:(N )10 = an1 10n1 + an2 10n2 + + a1 101 + a0 100+ a1 101 + a2 102 + + am

3、10m=式中,a i 表示各个数字符号为 09 这 10 个数码中的任意一个; n 为整数部分的位数,m 为小数部分的位数;10 i 为该位数字的权。例如:(1234.56)10 = 1 103 + 2 102 + 3 101 + 4 100 + 5 101 + 6 102通常,对十进制数的表示,可以在数字的右下角标注 10 或 D。1.2.2 二进制数、八进制数和十六进制数的表示计算机中为了便于存储及计算的物理实现,采用了二进制。二进制数的基数为 2,只有 0、1 两个数码,其计数规则是“逢二进一”,即每位计满 2 就向高位进 1。它的各位的权是以 2i 表示的。对于任意一个二进制数 N,用

4、位置计数法表示为:(N )2 = (an1an2a1a0.a1a2am)2用按权展开式表示为:?(N )2 = an1 2n1 + an2 2n2 + + a1 21 + a0 20?+ a1 21 + a2 22 + + am 2m=式中,a i 表示各个数字符号为 0 或 1 这两个数码中的任意一个; n 为整数部分的位数,m 为小数部分的位数;2 i 为该位数字的权。例如:(101101)2 = 1 25 + 0 24 + 1 23 + 1 22 + 0 21 + 1 20 = (45)10通常,对二进制数的表示,可以在数字的右下角标注 2 或 B。二进制数运算规则简单,便于电路实现,它

5、是数字系统中广泛采用的一种数制。但因二进制表示一个数时,所用的位数比用十进制数表示的位数多,人们读写很不方便,容易出错。因此常采用八进制或十六进制。C 语言程序设计中就经常会用到这两种进制。八进制数的基数是 8,采用的数码是 0、1、2、3、4、5、6、7。计数规则是“逢八进一”,它的各位的权是以 8i 表示的。通常,对八进制数的表示,可以在数字的右下角标注 8 或 O,但在 C 语言中是在数的前面加数字 0 来表示。例如,(1234) 8 就是表示一个八进制数,而不是十进制数 1234,在 C 语言中它表示为 01234。十六进制数的基数是 16,采用的数码是0、1、2、3、4、5、6、7、

6、8、9、A、B、C、D、E 、F 。其中A、B、 C、D 、E、F 分别表示十进制数字 10、11、12、13、14、15。十六进制的计数规则是“逢十六进一”,它的各位的权是以 16i 表示的。通常,对十六进制数的表示,可以在数字的右下角标注 16 或 H,但在 C 语言中是在数的前面加数字 0 和字母 X 即 0X 来表示。例如,(12AF) 16 就是表示一个十六进制数,在 C 语言中它表示为 0X12AF。由此可得出:十进制、八进制、二进制与十六进制的特征对照表如表 1-1 所示。表 1-1 二进制、八进制、十进制与十六进制的特征对照表进 制 数 码 计 数 规 则 数的表示法十进制 0

7、、1、2、3、4、5、6、7、8、9 逢十进一 (1234)10二进制 0、1 逢二进一 (1101)2八进制 0、1、2、3、4、5、6、7 逢八进一 (4567)8十六进制 09、A、B、C 、D、E、F 逢十六进一 (45AF)161.2.3 二进制数和十进制数的转换1二进制转换为十进制数二进制数转换成十进制数是很方便的,只要将二进制数写成按权展开式,并将式中各 乘 积 项 的 积 计 算 出 来 , 然 后 各 项 相 加 , 即 可 得 到 与 该 二 进 制 数 相 对应 的 十 进 制 数 。 例 如 :(11010.101)2 = 1 24 + 1 23 + 0 22 + 1

8、21 + 0 20?+ 1 21 + 0 22 + 1 23= 16 + 8 + 2 + 0.5 + 0.125=(26.625)102十进制转换为二进制数十进制数转换成二进制数分成整数部分转换和小数部分转换,下面分别来介绍它们转换的方法。(1)整数部分转换把要转换的十进制数的整数部分不断除以基数 2,并记下余数,直到商为 0为止。【例 1-1】 ( N )10 = (117)10117 / 2 = 58 (a 0 = 1) 最低整数位58 / 2 = 29 (a 1 = 0)29 / 2 = 14 (a 2 = 1)14 / 2 = 7 (a 3 = 0)7 / 2 = 3 (a 4 = 1

9、)3 / 2 = 1 (a 5 = 1)1 / 2 = 0 (a 6 = 1) 最高整数位所以 (N )10 = (1110101)2。注意:对于整数部分的转换第一次除以 2 所得到的余数是二进制数整数的最低位,最后所得到的余数是二进制数整数的最高位。(2)小数部分转换对于被转换的十进制数的小数部分则应不断乘以基数 2,并记下其整数部分,直到结果的小数部分为 0 为止。【例 1-2】 ( N )10 = (0.8125)100.8125 2 = 1.625 (b 1 = 1) 最高小数位0.625 2 = 1.25 (b 2 = 1)0.25 2 = 0.5 (b 3 = 0)0.5 2 =

10、1.0 (b 4 = 1) 最低小数位所以 (N )10 = (0.1101)2。注意:对于小数部分的转换式中的整数不参加连乘,第一次乘以 2 所得到的整数部分是二进制数小数的最高位,最后所得到的整数部分是二进制数小数的最低位。在十进制的小数部分转换中,有时连续乘以 2 不一定能使小数部分等于 0,这说明该十进制小数不能用有限位二进制小数表示。这时,只要取足够多的位数,使其误差达到所要求的精度就可以了。十进制数转换成二进制数的这种方法其实也适用于十进制数转换成其他进制的数,只是基数不再是 2,而是要转换的进制数的基数。下面的例子是将一个十进制数转换成八进制数。【例 1-3】 ( N )10 =

11、 (117)10117 / 8 = 14 (a 0 = 5) 最低整数位14 / 8 = 1 (a 1 = 6)1 / 8 = 0 (a 2 = 1) 最高整数位所以 (N )10 = (165)8。【例 1-4】 ( N )10 = (0.8125)100.8125 8 = 6.5 (b 1 = 6) 最高小数位0.5 8 = 4.0 (b 2 = 4) 最低小数位所以 (N )10 = (0.64)8。1.2.4 二进制数、八进制数和十六进制数的转换八进制数的基数是 8(8 = 2 3),十六进制数的基数是 16(16 = 2 4)。二进制数、八进制数和十六进制数之间具有 2 的整指数倍的

12、关系,因而可直接进行转换。1二进制数 八进制数从小数点开始,分别向左、右按 3 位分组转换成对应的八进制数字字符,最后不满 3 位的,则需补 0。【例 1-5】 将二进制数(1101101.10101) 2 转换成八进制数。具体方法为:二进制数: 0 0 1 1 0 1 1 0 1. 1 0 1 0 1 0 八进制数: 1 5 5 . 5 2所以 (1101101.10101)2 = (155.52)8。2八进制数 二进制数将每位八进制数用 3 位二进制数表示即可。【例 1-6】 将八进制数(345.64) 8 转换成二进制数。具体方法为:八进制数: 3 4 5 . 6 4 二进制数: 011

13、 110 101 . 110 100所以 (345.64)8 = (11100101.1101)2。3二进制数 十六进制数从小数点开始,分别向左、右按 4 位分组转换成对应的十六进制数字字符,最后不满 4 位的,则需补 0。【例 1-7】 将二进制数(1101101.10101) 2 转换成十六进制数。具体方法为:二进制数: 0 1 1 0 1 1 0 1 . 1 0 1 01 0 0 0 十六进制数: 6 D . A 8所以 (1101101.10101)2 = (6D.A8)16。4十六进制数 二进制数将每位十六进制数用 4 位二进制表示即可。【例 1-8】 将十六进制数(A8D.6C) 16 转换成二进制数。具体方法为:十六进制数: A 8 D . 6 C 二进制数: 1010 1000 1101 . 0110 1100所以 (A8D.6C)16 = (101010001101.011011)2。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。