首页 C语言进制转换

C语言进制转换

举报
开通vip

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

C语言进制转换
c语言中的进制转换 竞赛 2008-10-07 10:48:55 阅读1111 评论0   字号:大中小 订阅 1.2 进位计数制及其转换 计算机能够处理数值、文字、声音、图像等信息。读者也许会问:为什么作为电子设备的计算机能处理那么多复杂的信息呢?实际上,当把这些信息转换成计算机能识别的形式就能进行处理。目前计算机中所有的信息都用“0”和“1”两个数字符号组合的二进制数来表示。 数值、图形、文字等各种形式的信息,需要计算机加工处理时,首先必须按一定的法则转换成二进制数。本节将首先以常用的十进制为出发点,来讨论二进制、八进制及十六进制的特点,然后介绍各种进制数之间的转换方法。 1.2.1 十进制数的表示 进位计数制是一种计数的方法,习惯上最常用的是十进制计数法。十进制数的每位数可以用下列10个数码之一来表示:0、1、2、3、4、5、6、7、8、9。十进制数的基数为10,基数表示进位制所具有的数码的个数。 十进制数的计数规则是“逢十进一”,也就是说,每位累计不能超过9,计满10就应向高位进1。 一般来讲,任意一个十进制数N,可以用位置计数法表示如下: (N )10 = (an–1an–2…a1a0.a–1a–2…a–m)10 也可以用按权展开式表示如下: (N )10 = an–1 × 10n–1 + an–2 × 10n–2 + … + a1 × 101 + a0 × 100 + a–1 × 10–1 + a–2 × 10–2 + … + a–m × 10–m = 式中,ai表示各个数字符号为0~9这10个数码中的任意一个;n为整数部分的位数,m为小数部分的位数;10i为该位数字的权。例如: (1234.56)10 = 1 × 103 + 2 × 102 + 3 × 101 + 4 × 100 + 5 × 10–1 + 6 × 10–2 通常,对十进制数的表示,可以在数字的右下角标注10或D。 1.2.2 二进制数、八进制数和十六进制数的表示 计算机中为了便于存储及计算的物理实现,采用了二进制。二进制数的基数为2,只有0、1两个数码,其计数规则是“逢二进一”,即每位计满2就向高位进1。它的各位的权是以2i表示的。 对于任意一个二进制数N,用位置计数法表示为: (N )2 = (an–1an–2…a1a0.a–1a–2…a–m)2 用按权展开式表示为: ?(N )2 = an–1 × 2n–1 + an–2 × 2n–2 + … + a1 × 21 + a0 × 20 ??+ a–1 × 2–1 + a–2 × 2–2 + … + a–m × 2–m = 式中,ai表示各个数字符号为0或1这两个数码中的任意一个;n为整数部分的位数,m为小数部分的位数;2i为该位数字的权。例如: (101101)2 = 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 = (45)10 通常,对二进制数的表示,可以在数字的右下角标注2或B。 二进制数运算规则简单,便于电路实现,它是数字系统中广泛采用的一种数制。但因二进制表示一个数时,所用的位数比用十进制数表示的位数多,人们读写很不方便,容易出错。因此常采用八进制或十六进制。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、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、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 十六进制 0~9、A、B、C、D、E、F 逢十六进一 (45AF)16 1.2.3 二进制数和十进制数的转换 1.二进制转换为十进制数 二进制数转换成十进制数是很方便的,只要将二进制数写成按权展开式,并将式中各乘积项的积计算出来,然后各项相加,即可得到与该二进制数相对应的十进制数。例如: (11010.101)2 = 1 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 ??+ 1 × 2–1 + 0 × 2–2 + 1 × 2–3 = 16 + 8 + 2 + 0.5 + 0.125 =(26.625)10 2.十进制转换为二进制数 十进制数转换成二进制数分成整数部分转换和小数部分转换,下面分别来介绍它们转换的方法。 (1)整数部分转换 把要转换的十进制数的整数部分不断除以基数2,并记下余数,直到商为0为止。 【例1-1】 (N )10 = (117)10 117 / 2 = 58 (a0 = 1) 最低整数位 58 / 2 = 29 (a1 = 0) 29 / 2 = 14 (a2 = 1) 14 / 2 = 7 (a3 = 0) 7 / 2 = 3 (a4 = 1) 3 / 2 = 1 (a5 = 1) 1 / 2 = 0 (a6 = 1) 最高整数位 所以 (N )10 = (1110101)2。 注意:对于整数部分的转换第一次除以2所得到的余数是二进制数整数的最低位,最后所得到的余数是二进制数整数的最高位。 (2)小数部分转换 对于被转换的十进制数的小数部分则应不断乘以基数2,并记下其整数部分,直到结果的小数部分为0为止。 【例1-2】 (N )10 = (0.8125)10 0.8125 × 2 = 1.625 (b1 = 1) 最高小数位 0.625 × 2 = 1.25 (b2 = 1) 0.25 × 2 = 0.5 (b3 = 0) 0.5 × 2 = 1.0 (b4 = 1) 最低小数位 所以 (N )10 = (0.1101)2。 注意:对于小数部分的转换式中的整数不参加连乘,第一次乘以2所得到的整数部分是二进制数小数的最高位,最后所得到的整数部分是二进制数小数的最低位。 在十进制的小数部分转换中,有时连续乘以2不一定能使小数部分等于0,这说明该十进制小数不能用有限位二进制小数表示。这时,只要取足够多的位数,使其误差达到所要求的精度就可以了。 十进制数转换成二进制数的这种方法其实也适用于十进制数转换成其他进制的数,只是基数不再是2,而是要转换的进制数的基数。下面的例子是将一个十进制数转换成八进制数。 【例1-3】 (N )10 = (117)10 117 / 8 = 14 (a0 = 5) 最低整数位 14 / 8 = 1 (a1 = 6) 1 / 8 = 0 (a2 = 1) 最高整数位 所以 (N )10 = (165)8。 【例1-4】 (N )10 = (0.8125)10 0.8125 × 8 = 6.5 (b1 = 6) 最高小数位 0.5 × 8 = 4.0 (b2 = 4) 最低小数位 所以 (N )10 = (0.64)8。 1.2.4 二进制数、八进制数和十六进制数的转换 八进制数的基数是8(8 = 23),十六进制数的基数是16(16 = 24)。二进制数、八进制数和十六进制数之间具有2的整指数倍的关系,因而可直接进行转换。 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 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 0 1 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。
本文档为【C语言进制转换】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_799670
暂无简介~
格式:doc
大小:93KB
软件:Word
页数:4
分类:
上传时间:2011-08-31
浏览量:58