C 语言进制之间的转换

 更新时间:2016年07月16日 15:36:04   投稿:lqh  
本篇文章主要介绍了C语言进制之间的转换,举例说明并附图片,帮助大家理解,希望对大家有所帮助

二进制、八进制和十六进制向十进制转换都是非常容易的,就是“按权相加”。

所谓“权”,也即“位权”。例如,十进制第1位的位权为100=1,第2位的位权为101=10,第3位的位权为102=100;而二进制第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4。设数字所采用的进制为N(基数也是N),那么第 i 位的位权为 N(i-1)

不同进制转换为十进制举例:

二进制:1001 = 1×23 + 0×22+ 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9

二进制:101.1001 = 1×22 + 0×21+ 1×20+ 1×2-1+ 0×2-2 + 0×2-3 + 1×2-4= 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625

八进制:0302 = 3×82 + 0×81+ 2×80 = 192 + 0 + 2 = 194

八进制:0302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375

十六进制:0Xea7 = 14×162 + 10×161 + 7×160= 3751

十进制转换为二进制——辗除法

上节的表格中给出了简单的十进制和二进制的转换关系,要想获得更多的转换关系,可以使用辗除法。辗除法也就是“除模取余”法。除模取余就是将一个几进制的数转化成另一个进制时, 另一个进制的基数就是模,用将要转化的进制数除以模,取它的余数。

下图以十进制的“19”转换为二进制为例进行讲解:

如图所示,以2为除数,一直相除下去,直到商为0,余数则为求得的二进制数。

注意:余数要倒序排列,也就是说,最先求得的余数排在二进制的最后面,最后求得的余数排在二进制的最前面。上面的例子中,最后求得的二进制数为 10011。

虽然其他进制也可以按照辗除法来转换,但是比较麻烦,下面介绍更简单的方法。

二进制和八进制的转换

二进制向八进制的转换是每三位二进制数转换为一位八进制数,运算的顺序是从低位向高位依次进行,高位不足三位用零补充。以二进制“1011101”为例,如下图所示:

转换的结果为:1011101 = 0135

八进制向二进制转换的思路是八进制的一位转换为二进制的三位,运算的顺序是从低位向高位依次进行。同样以八进制“0135”为例,如下图所示:

转换的结果为:0135 = 1011101

二进制和十六进制的转换

二进制向十六进制转换时,四位转换成十六进制的一位,运算的顺序是从低位向高位依次进行,高位不足四位用零补。以“1110011”转换成十六进制为例,如下图所示:

转换的结果为:1001011101 = 0X25D

十六进制向二进制转换,就是把十六进制的一位转换成二进制的四位,注意运算的顺序是从低位向高位依次进行。同样以十六进制“0X25D”为例,如下图所示:

 以上就是对 C语言进制直接转化做的一个资料整理,学习进制转换的朋友可以参考下

相关文章

  • 常用的STL查找算法

    常用的STL查找算法

    这篇文章主要介绍了常用的STL查找算法的相关资料,十分的详细,需要的朋友可以参考下
    2015-07-07
  • C++ 实现汉诺塔的实例详解

    C++ 实现汉诺塔的实例详解

    这篇文章主要介绍了C++ 实现汉诺塔的实例详解的相关资料,这里主要说明C++中数据结构的递归的应用,需要的朋友可以参考下
    2017-08-08
  • C++编译错误variable-sized object may not be initiali问题

    C++编译错误variable-sized object may not be initiali问题

    这篇文章主要介绍了C++编译错误variable-sized object may not be initiali问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • C语言实现24点问题详解

    C语言实现24点问题详解

    24点问题就是在屏幕上输入1〜10范围内的4个整数(可以有重复),对它们进行加、减、乘、除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果等于24的表达式。本文将通过C语言实现24点问题的求解,需要的可以参考一下
    2021-12-12
  • wxWidgets自定义按钮的方法

    wxWidgets自定义按钮的方法

    这篇文章主要为大家详细介绍了wxWidgets自定义按钮的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C++双目运算符+=的重载详解

    C++双目运算符+=的重载详解

    这篇文章主要介绍了详解C++编程中的双目运算符重载,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • 深入分析C语言中结构体指针的定义与引用详解

    深入分析C语言中结构体指针的定义与引用详解

    本篇文章是对C语言中结构体指针的定义与引用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言中指针常量和常量指针的区别

    C语言中指针常量和常量指针的区别

    本文主要介绍了C语言中指针常量和常量指针的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C++输入空格字符串的三种解决方法

    C++输入空格字符串的三种解决方法

    字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结,本文给大家详细介绍了C++输入空格字符串的三种解决方法,需要的朋友可以参考下
    2025-04-04
  • C++布隆过滤器的使用示例

    C++布隆过滤器的使用示例

    宁可错杀一千,也不放过一个,这是布隆过滤器的特点,本文主要介绍了C++布隆过滤器的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09

最新评论