楔子

2021-1-20,天气阴,今天感觉乱糟糟的,心态也不好,什么都提不起兴趣来,唉,这疫情什么时候才能结束啊!!!


1、其他进制转十进制

  • 1.1、二进制转十进制
    转换规程: 从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和,例如:
 二进制 1011 = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 1 + 2 + 0 + 8 = 11

  • 1.2、八制转十进制
    转换规则: 从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和,例如:
 八进制 0123 = 3*8^0 + 2*8^1 + 1*8^2 = 3+16+64 = 83
  • 1.3、十六进制转十进制
    转换规则: 从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和,例如:
     十六进制 0x34A = 10*16^0 + 4*16^1 + 3*16^2 = 10+64+768 = 842

2、十进制转其他进制

  • 2.1、十进制转二进制binary
    规则: 将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制,故此法叫做除商逆序取余法
    案例: 将56转换为二进制
 56 :56 / 2 = 28 余028 / 2 = 14 余0 14 / 2 = 7 余07 / 2 = 3 余13 / 2 = 1 余11 / 2 = 0余 1故56转换为二进制的结果是:111000

代码实现:

#include <stdio.h>//转十进制二进制
void main() {printf("请输入一个十进制数:");int binary = 0; //二进制数int b = 1; //循环标志        int num[100] ; //用来存二进制的数组int index = 0;  //数组的下标int count = -1; //用来计算数组的使用个数,这里使用-1是因为数组的下标是从0开始的//所以当我们循环一次去自增的时候,第一次应该是从0开始,如果count的初始值是0的话//就会导致使用的第一个数组的下标为1,那样会导致存数据的下标index和记录使用的下标count不一致//使数据溢出scanf("%d",&binary);while (b) {num[index] = binary % 2; //每次运算取余binary /= 2; //每次运算二进制数需要除以2//printf("num[%d]=%d\n",index,num[index]);index++; //每循环一次数组下标就移一位count++; //每循环一次就表示占用了数组的一个位置if (binary == 0) {b = 0;}}printf("占用数组位置%d个",count+1);printf("\n");printf("二进制数为:");for (int i = count; i >=0; i--) { printf("%d",num[i]);}getchar();getchar();//回车会被接收,所以需要两个来暂停控制台
}
  • 2.2、十进制转八进制octonary
    规则: 将该数不断除以8,直到商为0,然后将每步得到的余数倒过来,就是对应的八进制。
    **案例:**将156转换为八进制
 156:156 / 8 = 19 余 419 / 8 = 2 余 32 / 8 = 0 余 2故156转换为八进制的结果是:0234

代码实现:

#include <stdio.h>
//十进制转八进制
#define TRUE 1 //宏定义 true为1
#define FALSE 0//宏定义 false为0
void main() {int num[100]; //定义数组用来存储转换后的八进制数int octonary = 0; //十进制数int b = TRUE; //循环赋值的标志int index = 0; //存储八进制位数的下标int count = -1; //八进制数的位数printf("请输入一个十进制数:");scanf("%d",&octonary);while (b) {num[index++] = octonary % 8; //获取余数octonary /= 8; //累除count++;if (octonary == 0) { //当octonary为0时,表示已经除完了,除到底了,这时候只需要将所得到的的余数b = FALSE;      //倒过来就是需要求的八进制数了}}printf("占用数组位置%d个\n",count+1);printf("八进制数为:");for (int i = count; i >= 0; i--) {printf("%d",num[i]);}getchar();getchar();}
  • 2.3、十进制转十六进制HEX(hexadecimal)
    规则: 将该数不断除以16,直到商为0,然后将每步得到的余数倒过来,就是对应的十六进制。
    案例: 将356转换成十六进制
 356:356 / 16 = 22 余 422 / 16 = 1 余 61 / 16 = 0 余 1故356转换为十六进制的结果为0x164

代码实现:

#include <stdio.h>
#include <stdbool.h>
//十进制转换为十六进制
void main() {int hexadecimal = 0;printf("请输入一个十进制数:");scanf("%d",&hexadecimal);bool b = true;int index = 0;//数组的下标int num[100];//用来存储转换后十六进制while (b) {num[index++] = hexadecimal % 16;hexadecimal /= 16;if (hexadecimal == 0) {b = false;}}printf("占用数组的位置%d个\n",index);printf("转换后的十六进制数为:");for (int i = index-1; i >= 0; i--) {printf("%d",num[i]);}getchar();getchar();
}

3、二进制转其他进制

  • 3.1、二进制转八进制
    规则: 从低位开始,将二进制数每三位一组(111表示7)分组,不够的用0补充,将每一组转换成对应的八进制即可
    案例: 将11010101转成八进制
 11010101:对其进行三位一体分组第一组:101 ——>  5第二组:010 ——>  2第三组:011 ——>  3故,二进制11010101对应的八进制数是:0325
  • 3.2、二进制转十六进制
    规则: 从低位开始,将二进制数每四位一组(1111表示F)进行分组,转成对应的十六进制数即可
    案例: 将11010101转成十六进制
 11010101:对其进行四位一体分组第一组:0101 ——> 5第二组:1101 ——> 13故,二进制11010101转换为十六进制数是:0xD5

4、其他进制转二进制

  • 4.1、八进制转二进制
    规则: 将八进制数的每一位,转换成对应的一个三位的二进制数即可
    案例: 将0237转成二进制
 0237:每一位对应三位二进制数进行拆分第一组 7 ——> 111第二组 3 ——> 011第三组 2 ——> 010故,八进制数0237转换为二进制为:10011111
  • 4.2、十六进制转二进制
    规则: 将十六进制数的每一位,转换成对应的一个四位的二进制数即可
    案例: 将0X23B转换成二进制数
 0x23B:每一位对应四位二进制数进行拆分第一组 B ——> 1011第二组 3 ——> 0011第三组 2 ——> 0010故,0x23B转换为二进制数为:1000111011

C语言的进制转换以及算法实现相关推荐

  1. c语言中10转8和16的转换,(C语言)10进制转换2,8,16进制

    (C语言)10进制转换2,8,16进制 作者:vinseven #include"stdio.h" #include"conio.h" #include&quo ...

  2. C语言:进制转换(整数、字符串)

    本文重点:常见的整型.字符串进制转换(略有不同) 参考书籍:<算法笔记> 1.int型进制转换 1.1.P进制数x转换为十进制数y 实现代码如下: #include <cstdio& ...

  3. c语言ae16进制转换,进制转换工具下载_16进制2进制转换with曼彻斯特编码 1.3 免费版_极速下载站_软件下载...

    16进制2进制转换with曼彻斯特编码是一款简单易用的转换工具,可以对16进制.2进制.曼彻斯特算法.10进制等进行互转,支持802.3曼彻斯特.标准曼彻斯特.差分三种转换模式,支持曼彻斯特编码每8位 ...

  4. c语言177转换成八进制,C语言项目设计——进制转换

    <河海大学C语言项 目设计> 课程设计题目: 进制转换系统 学生学号: 学生姓名: 指导老师: 一.程序功能 本系统由c语言编写而成,主要实现对进制的转换.输入一个数,按要求转化成二进制, ...

  5. C语言笔记-进制转换

    一.进制转换     为什么要使用二进制.八进制.十进制.十六进制         因为现在的CPU只能识别高低电平,只能对二进制数据进行计算         虽然二进制的数据可以直接被CPU识别计算 ...

  6. java语言编写进制转换_Java 3种方法实现进制转换

    由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制. 1.使用Java带有的方法Integer,最简单粗暴了,代码如下 //使用java提供的方法 //但仅局限于比较常用的二进制.八 ...

  7. 数据结构C语言版进制转换

    //进制转换: #include<stdio.h> #include<stdlib.h> #define Stack_size 100 #define Stackincream ...

  8. c语言小数点进制转换,新手求教,关于含小数的二进制转换成十进制

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include void main() { int i=0,n,j,a[20],b[20],k,c=0; double m,x,d; ...

  9. 29.【C语言】进制转换:10转16、10转2、2转10、16转10(Demo)

    算法思想: 在对于10转其他进制可以利用短除法的思想,将10进制数转换成其他进制数.,如下图所示,x为进制,num为十进制数. 1.10进制转16进制主体部分 void DecToHex(int nu ...

  10. 进制转换的算法及进制在线转换器

    整型的四种表示形式 十进制整数,如:99, -500, 0 八进制整数,要求以 0 开头,如:015 十六进制数,要求 0x 或 0X 开头,如:0x15 二进制数,要求0b或0B开头,如:0b011 ...

最新文章

  1. ×××视频下载:皮皮影视客户端功能使用
  2. HTML自动换行的问题
  3. HDLBits答案(16)_Verilog有限状态机(3)
  4. python互斥锁原理_python并发编程之多进程1------互斥锁与进程间的通信
  5. java程序给输出汉字_java面试题目编写一个java程序,实现拼音转成对应汉字功能。...
  6. 三峡大学 计算机学院 刘洋,三峡大学科技学院2016年预科内升本专业分流结果公示...
  7. 【Go】Go语言中反射包的实现原理(The Laws of Reflection)
  8. 我讨厌计算机作文500,我讨厌谎言作文500字(精选5篇)
  9. 使用浏览器访问服务器shell(ssh方式)
  10. 测试流程如何有效落地?
  11. Win10下开机自动启动运行bat脚本并打开cmd运行命令
  12. 树莓派无线中继的实现
  13. 基于python和高德地图租房系统的设计与实现
  14. 推荐一个svg转ico的在线网站(非常清晰)
  15. 苹果发布2021款iPad Pro,并搭载M1芯片,性能大幅提升
  16. 2020年的数据工程
  17. creo打不开stp文件_Creo怎么打开stp格式的文件?
  18. nobup 与 后台运行命令
  19. java 内存溢出 扩大jvm内存
  20. python打造记账本,记账本-简单的python脚本

热门文章

  1. 【神经网络】权重衰减(weight-decay)
  2. Alpha测试与Beta测试
  3. gogo learning
  4. 图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
  5. C#对Redis的读写与使用
  6. 开心网(http://www.kaixin001.com)的一些JS代码分享
  7. 微软早就该收购雅虎了
  8. Xbox360 十年祭:那些荣耀、激昂、内乱与未尽的未来
  9. 仙人掌之歌——路转峰回(1)
  10. 雷军现身国庆 70 周年阅兵花车!