admin管理员组文章数量:1794759
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 <stdio.h> int main() { int i = 31; printf("i = %d\\n", i); // %d表示以十进制输出整型数据 printf("i = %o\\n", i); // %o表示以八进制输出整型数据,注意这里是小写字母o printf("i = %x\\n", i); // %x表示以十六进制输出整型数据,如果数字中包含字母时,字母为小写 printf("i = %X\\n", i); // %X表示以十六进制输出整型数据,如果数字中包含字母时,字母为大写 printf("i = %#x\\n", i); // %o表示以十六进制输出整型数据,输出结果中带有0x printf("i = %#X\\n", 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个二进制位,这在二进制与十六进制的互相转换过程中给我们提供了便利。
方法:从右向左,四位一段,不够补零,按十进制,分段转换
例如:
2.十六进制转为二进制方法:将每一个十六进制位转换为四个二进制位
例如:
五、二进制与八进制的互相转换- 思考:1个八进制位需要多少个二进制位来表示?
方法:从右向左,三位一段,不够补零,按十进制,分段转换 原理与二进制转为十六进制相同,这里不再举例说明
- 练习
- 将二进制数字11010转换为对应的八进制数字
- 将二进制数字110110转换为对应的八进制数字
- 将二进制数字0101110转换为对应的八进制数字
方法:将每一个八进制位转换为三个二进制位 原理与十六进制转为二进制相同,这里不再举例说明
- 练习
- 将八进制数字27转换为对应的二进制数字
- 将八进制数字34转换为对应的二进制数字
- 将八进制数字321转换为对应的二进制数字
学习完进制转化有助于学习计算机更底层的知识,它将为补码、汇编、调试等的学习打下坚实的基础。
本文标签: 语言
版权声明:本文标题:C语言之进制转换 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686625966a87878.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论