C语言--二进制与进制转换

本文深入讲解了C语言中二进制、八进制和十六进制之间的转换方法。包括二进制转换为十进制、十进制转换为二进制、二进制与八进制、十六进制的相互转换原理及实例。适合初学者理解不同进制间的转换规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在日常生活中,我们经常听到10进制,2进制,16进制的说法,那么这到底是什么意思呢?其实,这只是数字的一种表示形式。可能在平常我们对数字的10进制了解和应用更加熟悉,但是在计算机的世界里,它却只偏爱0和1,也就是二进制。
在这里插入图片描述

一、二进制

首先,我们来介绍一下二进制这位计算机皇帝的独宠贵妃。
以我们最熟悉的十进制为例,在十进制中,每一位的数字0 ~ 9组成,运算规则是满10进1;其实二进制也是如此:每一位数字0 ~ 1组成,运算规则是满2进1。例如11010就是一个二进制的数字

二、二进制与其他进制之间的转换

当我们大概了解了二进制是什么,我们会有疑问,既然进制只是数字的一种表示形式,那么进制之间如何转换呢?下面我们就来学习一下。

2.1 二进制与十进制转换

2.1.1 二进制转换为十进制

我们还是以10进制为例,例如123在十进制中,3是个位,权重是10 ^0(10的0次方),3就等于3* 10 ^0,同理,2是十位,权重是10 ^ 1,2 = 2* 10 ^ 1;
3是百位,权重是10 ^ 2,3 = 3* 10 ^ 2。
那在二进制中,每一位也有对应的权重,例如二进制的数1101,从左往右的权重分别是2 ^ 0 , 2 ^ 1 , 2 ^ 2……,那么1101就可以表示为1 * 2 ^ 0 + 0 * 2 ^ 1 + 1 * 2 ^ 2 + 1 * 2 ^ 3 = 13

2.1.2 十进制转化为二进制

我们清楚了二进制如何转化为十进制,那么如何由十进制转化为二进制呢?
以数字125为例,对125不断除2,取余得到各个余数,将得到的余数依次从上到下写出来
除数 被除数 余数
2 |__ 125__ …… 1
2 |__ 62___ …… 0
2 |__ 31___ …… 1
2 |__ 15___ …… 1
2 |__ 7____ …… 1
2 |__ 3____ …… 1
2 |__ 1____ …… 1
// 0
得到余数后,将余数从下往上依次读,则10进制的125转换为2进制为: 1111101

2.2 二进制与八进制转换

在了解了二进制与十进制之间的关系和转换后,我们趁热打铁来讨论一下二进制与八进制。与二进制和十进制同理,八进制的每一位是由0~7构成的,运算规则是满八进一

2.2.1二进制转换为八进制

八进制中的一位最大为7,7用二进制表示的话是111,那么表示八进制一位数字只需要二进制三位数字
所以二进制转化为八进制的时候,从二进制右边最低位开始向左依次每3个二进制数转化为一个八进制数,到最后剩余不够3个二进制位,在左边补上0直到3个二进制位(或者直接换算)例如:
01101011是一个二进制数,转换为八进制
二进制:01(补上0: 001)101 011
八进制: 1 5 3
在这里插入图片描述
我们验证一下:01101011二进制转换成十进制是107,我们用八进制的153打印:

#include <stdio.h>
int main()
{
	printf("%d", 0153);//在数字前加上0会被当做八进制打印
	return 0;
}

结果:
在这里插入图片描述

2.2.2 八进制转换为二进制

八进制转换为二进制其实就是二进制转换为八进制的逆过程,即八进制中的一位转换成二进制中的三位,例如:
八进制中的153,转换成二进制:
在这里插入图片描述

2.3 二进制与十六机制转换

二进制的一位数字由0 ~ 1组成,最大为1,;
八进制的一位数字由0 ~ 7组成,最大为7;
那么以此类推
十六进制的一位数字由0 ~ 15组成 ,最大为15。是不是很完美,其实那你聪明的脑瓜想一想就不可能。如果一个十六进制是1314,你如果判断是14是一位呢,还是1和4分开是两位呢,所以这种是错误的。
其实,为了避免这种错误,我们把十六进制中数字大于9的二位数10,11,12,13,14,15分别用字母a,b,c,d,e,f表示
在这里插入图片描述
其中f最大,表示15
所以十六机制的一位数字由0 ~ 9,a ~ f 组成,最大为f,表示15。

2.3.1 二进制转换为十六进制

与二进制转八进制同理,在十六进制中一位最大为f,也就是15,15用二进制表示为1111,那么一个十六进制的数最多用二进制的4为来表示,从左到右依次每4个二进制位转化为一个十六进制位,到最后不够4位的直接运算或者补0。例如:
二进制:01101011
十六进制:6b
在这里插入图片描述

2.3.2 十六进制转换为二进制

十六进制转换为二进制就是把十六进制中的每一位转换成二进制中的四位,就是二进制转化为十六进制的逆过程。

总结一下

  • 一、
    二进制,八进制,十六进制只是数字的一种表示方式,在计算机中主要还是以二进制为主。
    二进制每一位数字取0 ~ 1,满2进1;
    八进制每一位数字取0 ~ 7,满8进1;
    十六进制每一位数字取0 ~ 9,a ~ b;满16进1。
  • 二、
    进制转换:
    二进制 --> 八进制      三位变一位
    八进制 --> 二进制      一位变三位

二进制 --> 十六进制    四位变一位
十六进制 --> 二进制    一位变四位

到这里,二进制和进制转换就学习完毕了,文章有错误和有待改进的地方,请广大码友批评指正,感谢您的阅读。我们下次再见!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值