栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言之进制转换

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言之进制转换

文章目录
  • 一、基础知识
    • 1.C语言中的进制
    • 2.汇编中的进制
    • 3.常见进制的基数:
    • 4.不同进制的输出方式
  • 二、十进制转为其它进制
  • 三、任意进制转为十进制
  • 四、二进制与十六进制的互相转换
    • 1.二进制转为十六进制
    • 2.十六进制转为二进制
  • 五、二进制与八进制的互相转换
    • 1.二进制转为八进制
    • 2.八进制转为二进制
  • 六、总结


一、基础知识 1.C语言中的进制

C语言规定,在八进制数字前要加0(注意这里是数字零,不是大写字母O),在十六进制数字前要加0X或0x(注意这里同样是数字零,不是大写字母O),而在十进制数字前不需要加任何东西。

int i = 10; //表示十进制数字
int j = 010; //表示八进制数字
int k = 0x10; // 表示十六进制数字
int l = 0x10; // 表示十六进制数字
2.汇编中的进制

汇编语言中,在数字后加字母B表示二进制数字,在数字后加字母O表示八进制数字,在数字后加字母D表示十进制数字,在数字后加字母H表示十六进制数字。

例如:
1011B表示二进制数字1011
1357O表示八进制数字1357
2049D表示十进制数字2049
3FB9H表示十六进制数字3FB9

3.常见进制的基数:

十进制:0 1 2 3 4 5 6 7 8 9
二进制:0 1
八进制:0 1 2 3 4 5 6 7
十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f(或0 1 2 3 4 5 6 7 8 9 A B C D E F)

4.不同进制的输出方式
#include 

int main()
{
	int i = 31;

	printf("i = %dn", i);  // %d表示以十进制输出整型数据
	printf("i = %on", i);  // %o表示以八进制输出整型数据,注意这里是小写字母o
	printf("i = %xn", i);  // %x表示以十六进制输出整型数据,如果数字中包含字母时,字母为小写
	printf("i = %Xn", i);  // %X表示以十六进制输出整型数据,如果数字中包含字母时,字母为大写
	printf("i = %#xn", i); // %o表示以十六进制输出整型数据,输出结果中带有0x
	printf("i = %#Xn", i); // %o表示以十六进制输出整型数据,输出结果中带有0X

	return 0;
}
二、十进制转为其它进制
  • 预备知识:在C语言中,小数字除以大数字,商为0,而余数就是小数字本身。例如,3/8 = 0,3%5 = 3;1/2 = 0,1%5 = 1;7/16 = 0,7%16 = 7

示例一:将十进制数字185转为对应的二进制数字,用185不断除以2,每次保留余数,直至商为0,然后把保留的余数倒过来,得到的就是十进制数字185对应的二进制数字,如下图左侧部分所示。

示例二:将十进制数字185转为对应的八进制数字,用185不断除以8,每次保留余数,直至商为0,然后把保留的余数倒过来,得到的就是十进制数字185对应的八进制数字,如下图右上角部分所示。

示例三:将十进制数字3981转为对应的十六进制数字,用3981不断除以16,每次保留余数,直至商为0,然后把保留的余数倒过来,得到的就是十进制数字3981对应的十六进制数字,如下图右下角部分所示。

总结:十进制转n进制,除n取余,直至商为0,后将余数倒叙排列

  • 练习
  • 将十进制数字123转换为对应的二进制数字
  • 将十进制数字123转换为对应的八进制数字,并通过编写程序检查是否正确
  • 将十进制数字10000转换为对应的十六进制数字,并通过编写程序检查是否正确
三、任意进制转为十进制
  • 思考:十进制数字1234是怎么得到的?


以上述问题为依据,我们有理由推断:

所以,其它进制转换为十进制的方式便因此得出:

四、二进制与十六进制的互相转换
  • 思考:1个十六进制位需要多少个二进制位来表示?
    因为1个十六进制位有16种不同的状态,而1个二进制位只有2种不同的状态,所以,需要4个二进制位进行排列组合才能拥有16种不同的状态。通俗地讲,1个十六进制位可以表达出16个不同的数字(0-15),而1个二进制位只能表达出2个不同的数字,所以需要4个二进制位才可以表达出16个不同的数字。例如,十六进制数字C对应的十进制数字是12,十进制数字12对应的二进制数字为1100。所以,1个十六进制位便对应4个二进制位,这在二进制与十六进制的互相转换过程中给我们提供了便利。
1.二进制转为十六进制

方法:从右向左,四位一段,不够补零,按十进制,分段转换

例如:

2.十六进制转为二进制

方法:将每一个十六进制位转换为四个二进制位

例如:

五、二进制与八进制的互相转换
  • 思考:1个八进制位需要多少个二进制位来表示?
1.二进制转为八进制

方法:从右向左,三位一段,不够补零,按十进制,分段转换
原理与二进制转为十六进制相同,这里不再举例说明

  • 练习
  • 将二进制数字11010转换为对应的八进制数字
  • 将二进制数字110110转换为对应的八进制数字
  • 将二进制数字0101110转换为对应的八进制数字
2.八进制转为二进制

方法:将每一个八进制位转换为三个二进制位
原理与十六进制转为二进制相同,这里不再举例说明

  • 练习
  • 将八进制数字27转换为对应的二进制数字
  • 将八进制数字34转换为对应的二进制数字
  • 将八进制数字321转换为对应的二进制数字
六、总结

学习完进制转化有助于学习计算机更底层的知识,它将为补码、汇编、调试等的学习打下坚实的基础。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号