C语言补充之进制转换

首先让我们先了解以下概念:

数制(计数制):用一组数字与统一的规则来表示数的方法。


进位计数制(进制):用进位的方法进行计数的数制。
日常生活中常见的进制:

十进制、十二进制、十六进制、六十进制.…..

在计算机中采用的是二进制。

 

一.进位计数制的三大要素

  • 数位

  • 基数

  • 位权

1.数位

数码在一个数中的位置。

2.基数

在某种进制数中,每个数位上所能使用的数码的个数。

  • -十进制允许使用0~9共十个数码,基数就是10。
  • -八进制允许使用0~7八个数码,基数为8。
  • -十六进制允许使用0~9和A~F共十六个符号,基数为16。
  • -二进制允许使用0~1共两个数码,基数为2。

3.位权

表示数码在不同位置上的数值。

4.位权与基数

各进制中,位权是基数的整数幂.

  • 以小数点为界,小数点左边第一位的权是基数的0次幂
  • 向左每增加一位,幂增加1
  • 向右每增加一位,幂减少1

7df13bd472b14c44a51884afd776eb44.jpg

 按权展开式:按位权展开的多项式

1669761012bf4801a92ae6638118fc13.jpg

 二.进位计数制的计数规则

计数规则为逢N进1,借1当N(N为基数)

  • 十进制数的计数规则是逢10进1,借1当10。
  • 八进制为逢8进1,借1当8。
  • 十六进制为逢16进1,借1当16。
  • 二进制则为逢二进1,借1当2。

2024d2cae03b4afb86da19ba45477b6e.jpg

 不同进制数的表示:

                           用不同的后缀区别:

  • -二进制:B           110B
  • -八进制:O           1314O
  • -十进制:D           520D或520
  • -十六进制:H        66ABCH

用下标区别:
4b3ef84bd13548fb98a8d3e110aa3b83.jpg

三.进制转换

常用转换:

bddeb416c1b54f589e876d6c23fe1d0f.jpg

 1.十进制转换为非十进制

整数部分:除基数取余--除基数取余数,直到商为0,余数倒排

100转2进制为例:

956145bff9cf4f51a7e4c5f2c67a54b2.jpg

 

小数部分:采用“乘基数取整”--乘基数,取整数,直到积为0或达到指定的精度,整数正排列

以0.8125转2进制为例:

d110300b180940bf97d8ffe22e8f38e8.jpg

 ps:注:任何十进制整数都能精确地转换成R进制数;某些十进制小数不能精确地转换成R进制数。

所以,一些题目会要求精确到哪一位。

9ba66b77903d406ab5441cd7371de253.jpg

2.非十进制转化为十进制

只需按权展开求和即可,上文已说明,不再赘述。

3.二进制、八进制、十六进制的相互转换

  •  二进制转换成八进制:三位合一位

1011001100.10101B

把二进制序列,从小数点两侧开始,每三个划为一组,不够三个的补零。

001 011 001 100.101 010

将二进制化为八进制。

1314.52O

  • 二进制转换成十六进制:四位合一位

11000.101B​​​​​​​​​​​​​​

把二进制序列,从小数点两侧开始,每四个划为一组,不够四个的补零。

 0001 1000.1010

将二进制化为十六进制。

 18.AH

  • 八进制转换成二进制:一位拆三位

1314.52O

把八进制序列中每个数拆成三位二进制。

 1     3      4.   2

将八进制化为二进制:

001 011 001 100.101 010

整理后:

1011001100.10101

  • 十六进制转换成二进制:一位拆四位

66.66H

把十六进制序列中每个数拆成四位二进制。

 6    6  . 

将十六进制化为二进制:

0110 0110 . 0110 0110

整理后:

1100110.0110011B

  • 八进制和十六进制的相互转换可通过二进制来完成

12.345O

八进制转化为二进制。

001 010.011 100 110

整理后:

1010.01110011B

二进制四个划为一组。

1010.0111 0011

二进制化为十六进制:

A.73H

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值