文章目录

  • 一、进制的表示
    • 1.二进制
      • 1.1加法
      • 1.2减法
      • 1.3乘法
      • 1.4除法
      • 1.5实例
    • 2.八进制
    • 3.十进制
    • 4.十六进制
  • 二、进制之间的相互转换
    • 1.二进制转八进制
    • 2.二进制转十进制
    • 3.二进制转十六进制
    • 4.进制之间的相互转换
  • 三、C语言实现进制之间的转换
  • 总结

一、进制的表示

1.二进制

二进制数据是采用位置计数法,其权位是以2为底的幂。例如二进制数据110,逢2进1,其权重的大小顺序为:x2x^2x2 + x1x^1x1 + x0x^0x0,对其相应的位乘以权重,得到:1∗221*2^21∗22+1∗211*2^11∗21+0∗200*2^00∗20=14+12+0*1=6,故二进制110表示十进制的数6。

1.1加法

二级制加法有四种情况:
0+0=00+0=00+0=0, 0+1=10+1=10+1=1, 1+0=11+0=11+0=1, 1+1=101+1=101+1=10(0进位为1)

1.2减法

二进制减法有四种情况:
0−0=00-0=00−0=0, 1−0=11-0=11−0=1, 0−1=10-1=10−1=1, 1−1=01-1=01−1=0

1.3乘法

二进制乘法有四种情况:
0∗0=00*0=00∗0=0, 1∗0=01*0=01∗0=0, 0∗1=00*1=00∗1=0, 1∗1=11*1=11∗1=1

1.4除法

二进制除法有两种情况:(除数只能为1)
0/1=00/1=00/1=0, 1∗1=11*1=11∗1=1

1.5实例

两个二进制数1001与0101的算数运算克表示为:

2.八进制

八进制,Octal,缩写为OCT,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢8进1。特别地,八进制的数和二进制数可以按位对应,也就是说,一个八进制位对应二进制三位。
在C语言中,整数的表达有三种形式:十进制、八进制、十六进制。其中。以数字0开头,由0~ 7组成的数是八进制。以0X或0x开头,由0-9,A~ F或a~ f 组成是十六进制。除表示正负的符号外,以1~ 9开头,由0~9组成是十进制。

3.十进制

十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是0到9十个数字。要表示这十个数的10倍,就将这些数字左移一位,用0补上空位,即10,20,30,…,90;要表示这十个数的10倍,就继续左移数字的位置,即100,200,300,…。要表示一个数的1/10,就右移这个数的位置,需要时就0补上空位:1/10位0.1,1/100为0.01,1/1000为0.001。
十进制计数法是相对二进制计数法而言的,是我们日常使用最多的计数方法(俗称“逢十进一”),它的定义是:“每相邻的两个计数单位之间的进率都为十”的计数法则,就叫做“十进制计数法”。

4.十六进制

十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~ F表示10~15,这些称作十六进制数字。

【注】注意十六进制的表示,用字母H表示后缀,就比如BH就表示十六进制数11;也可以用0x(或0X)前缀表示,比如0x23就是十六进制数23。

二、进制之间的相互转换

1.二进制转八进制

为了把八进制数转换为二进制,将每一个八进制数字替换成下表中对应的三位二进制:

1 2 3
001 010 011
二进制/八进制换算表
二进制 八进制
-------- -----
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

为了将一个二进制数换算为八进制,只需将二进制串划分成每三个位一组(不够在前面补0)。举个简单的例子:

再比如:

2.二进制转十进制

二进制转为十进制的时候,先把二进制从高位(最左边的“1”)开始按从上到下的顺序写出 ,第一位就是最后的商 “2 / 2 = 1 余0 “,余数肯定是加零。其他位数如果有”1“(原来的余数),就先乘以”2“再加”1“。
下面就是从第一位开始乘以2加余数的方法算回去:
例如 100101110
1…………0 2+1=1……………余数为1
0…………1 2+0=2…………… 余数为0
0 …………2 2+0=4 ……………余数为0
1 …………4x2+1=9……………余数为1
0…………9x2+0=18 ………….余数为0
1 …………18x2+1=37 …………余数为1
1…………37x2+1=75……………余数为1
1…………75x2+1=151………… 余数为1
0…………151x2+0=302 ………… 余0
所以得到十进制数302
另:1x28+0x27+0x26+1x25+0x24+1x23+1x22+1x21+0x20=302

3.二进制转十六进制

二进制与十六进制对应的关系:

二进制转换成十六进制的方法是:取四合一法,即从二进制的小数点为分界线,向左(或向右)每四位取成一位,如下图所示:

4.进制之间的相互转换

八进制、十进制、十六进制之间的相互转换均是在二进制的基础上进行转换的。就比如,十进制数111转换成十六进制数,下面是其转换过程:

类似的,八进制转换十进制,十六进制转换十进制等,均是先转换成二进制,再转换成对应的进制。

三、C语言实现进制之间的转换

要求:输入一个二进制数,将其转换为十进制数;
例如输入二进制数:1001,其对应的十进制数为:9(1x23+0x22+0x21+1x20=9)
输入二进制数:110,其对应的十进制数为:6(1x22 + 1x21 + 0x20=6)

二进制转换为十进制C语言代码如下:

int Bin2Dec(int n)
{int decimalNumber = 0, i = 0, remainder;while (n != 0){remainder = n % 10;n /= 10;decimalNumber += remainder * pow(2, i);++i;}return decimalNumber;
}
int main()
{int n;printf("输入一个二进制数: ");scanf_s("%d", &n);printf("转换为十进制为:%d", Bin2Dec(n));return 0;
}

结果如下所示:


总结

进制之间的相互转换均是以二进制为中介,这样比较直观易懂

C语言学习—进制之间相互转换相关推荐

  1. 计算机进制小数位之间的转换,计算机进制之间相互转换

    <计算机进制之间相互转换>由会员分享,可在线阅读,更多相关<计算机进制之间相互转换(4页珍藏版)>请在人人文库网上搜索. 1.计算机进制之间相互转换计 算 机 进 制 之 间 ...

  2. 华清远见学习—“进制之间的转换”

    进制转换 可以直接进行算术运算的数据 二进制(逢2进1):0~1 十进制(逢10进1):0~9 八进制(逢8进1):0~7 十六进制(逢16进1):0-9.a(A)-f(F) 其他进制转十进制 方法: ...

  3. C# 各种进制之间相互转换 [ZT]

    MessageBox.Show(Convert.ToString(12345, 2));  //10进制转换为2进制  MessageBox.Show(Convert.ToString(12345,  ...

  4. 字符串16进制之间相互转换(转载)

    1.将普通的字符串. 点击进入推荐链接 class Program {static void Main(string[] args){string str = "Hello,C#!!!&qu ...

  5. 不同进制之间相互转换

    不同进制的转换都可以通过转换为10进制再由10进制转为其他进制的方法来实现,首先我们先看看不同的进制转为10进制如何操作 举一个16进制转为10进制的例子,首先有数1F3E1F3E1F3E,将他转为1 ...

  6. 常用的进制之间相互转换

    1.进制表示符号 二进制:B 用0和1表示 八进制:O 用0.1.2.3.4.5.6.7 十进制:D 用0.1.2.3.4.5.6.7.8.9 十六进制:H 用0.1.2.3.4.5.6.7.8.9. ...

  7. 数制转换 九度教程第44题 a进制数转换为b进制数 不同进制之间相互转换

    题目链接 解题思路: 1.将a进制数转换成十进制数: 2.将十进制数转换成b进制数: 3.使用do while 循环,可以确保即使被转换数字是 0 ,程序也能正常工作. AC代码: #include& ...

  8. 常用进制以及进制之间的转换方法

    常用进制以及进制之间的转换 常用进制 初学计算机编程,进制转换,是一个让人很头疼的一关,但还是必须要掌握.接下来给大家带来一些简单的进制转换方法. 进制呢,实际就是进位计数制,常用的进制有二进制,八进 ...

  9. C语言学习之路--计算机系统组成以及工作原理,进制之间的转换和机器数及其表示范围

    目录 一.前言 二.计算机系统组成以及工作原理简介 1.硬件系统基本组成原理及工作原理 2.硬件各部分详解 1.运算器 2.控制器 CPU 3.存储器 1.内存储器 2.外存储器 3.拓展 4.存储器 ...

  10. c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...

    C 语言进制之间的转换 二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位 ...

最新文章

  1. BT:大豆皮堆肥过程中的物质转化、微生物群落组成和代谢功能演替
  2. Yii框架官方指南系列43——专题:URL(创建、路由、美化及自定义)
  3. Spring Remoting: Hessian--转
  4. SAP配置webdynpro完全手册 .
  5. 详解go语言的array和slice 【二】
  6. 使用Java实现K-Means聚类算法
  7. c语言const限制什么,[C语言]类型限定词const解析
  8. ko学习二,绑定语法
  9. python怎么读取dat类型文件_基于python批量处理dat文件及科学计算方法详解
  10. matlab设计光栅,光栅原理及MATLAB仿真.doc
  11. 智能人物画像综合分析系统——Day1
  12. 计算机再带word打不开,电脑word文档打不开怎么办(附:4种解决办法)
  13. Adb connection Error:远程主机强迫关闭了一个现有的连接。
  14. sql中的 between and 用法
  15. 【天光学术】文学理论论文:符号学理论下文本互文性探究(节选)
  16. matlab产生正定矩阵
  17. Unity学习 — 官方中文版本教程详解
  18. oracle20c最新版本,Oracle DUL支持Oracle 20c
  19. 此mac已与apple id关联(如何绕过macOS恢复模式的激活锁)
  20. docker容器内pip install 显示 warning

热门文章

  1. [转载] Java中的(PO,VO,TO,BO,DAO,POJO)缩写解释
  2. iptables -F 后断开连接
  3. oracle trunc delete 有什么区别,oracle的trunc与round区别及处理日期和数值的区别
  4. java new 关键字到底做了什么?
  5. 比较ole db/odbc/ado/ado.net/jdbc
  6. CStdioFile UNICODE编译 读取中文汉字乱码 .
  7. ios带嗅探器的浏览器_MAC系统下 有没有像WIN系统的傲游浏览器那样有嗅探功能的呢?...
  8. 解决sql2005远程连接报错,提示请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接
  9. Dynamics AX2012 根据表字段查找对应的字段值
  10. 交易系统开发(一)——交易系统简介