C语言之进制转换

这篇具有很好参考价值的文章主要介绍了C语言之进制转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、基础知识

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对应的十六进制数字,如下图右下角部分所示。
C语言之进制转换
总结:十进制转n进制,除n取余,直至商为0,后将余数倒叙排列

  • 练习
  • 将十进制数字123转换为对应的二进制数字
  • 将十进制数字123转换为对应的八进制数字,并通过编写程序检查是否正确
  • 将十进制数字10000转换为对应的十六进制数字,并通过编写程序检查是否正确

三、任意进制转为十进制

  • 思考:十进制数字1234是怎么得到的?

C语言之进制转换
以上述问题为依据,我们有理由推断:
C语言之进制转换
所以,其它进制转换为十进制的方式便因此得出:
C语言之进制转换

四、二进制与十六进制的互相转换

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

1.二进制转为十六进制

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

例如:
C语言之进制转换

2.十六进制转为二进制

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

例如:
C语言之进制转换

五、二进制与八进制的互相转换

  • 思考:1个八进制位需要多少个二进制位来表示?

1.二进制转为八进制

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

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

2.八进制转为二进制

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

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

六、总结

学习完进制转化有助于学习计算机更底层的知识,它将为补码汇编调试等的学习打下坚实的基础。文章来源地址https://www.toymoban.com/news/detail-406528.html

到了这里,关于C语言之进制转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机系统(软考版)----计算机系统基础知识、基本单位与进制(1)

    计算机系统是由 硬件和软件 组成的,它们协同工作来运行程序。计算机的基本硬件系统由 运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU) 。(标黄这个需要记忆) CPU是硬件系统的

    2024年01月22日
    浏览(58)
  • 二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

    pwn是ctf比赛的方向之一,也是门槛最高的,学pwn前需要很多知识,这里建议先去在某宝上买一本汇编语言第四版,看完之后学一下python和c语言,python推荐看油管FreeCodeCamp的教程,c语言也是 pwn题目大部分是破解在远程服务器上运行的二进制文件,利用二进制文件中的漏洞来获

    2024年02月09日
    浏览(38)
  • stm32串口自定义协议接收一串十六进制数据(将其中两个字节转化为十进制数据)+部分串口基础知识

    位(bit): 二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。 字节(Byte): 计算机中数据的基本单位,每8位组成一个字节。各种信息在计算机中存储、处理至少需要一个字节。 例如,一个ASCII码用一个字节表示,一个汉字用两个字节表示。 字(Word):

    2023年04月08日
    浏览(59)
  • 【Python 千题 —— 基础篇】进制转换:十进制转二进制

    题目描述 计算机底层原理中常使用二进制来表示相关机器码,学会将十进制数转换成二进制数是一个非常重要的技能。现在编写一个程序,输入一个十进制数,将其转换成二进制数。 输入描述 输入一个十进制数。 输出描述 程序将输入的十进制数转换为二进制数,并输出其

    2024年02月07日
    浏览(79)
  • C语言实现任意栈之间的进制转换

            利用栈,将十进制数字N转换为D进制(D=2,8,16),其中16进制对应的符号是0~9,A~F。         要求:十进制数字和N进制从键盘输入获得,从屏幕显示进制转换后的数字。 代码: 效果图:

    2024年02月06日
    浏览(40)
  • C语言字符串转换为16进制

    方法二:自定义转换函数 输出结果: 这两种方法都可以将C语言字符串逐个字符转换为对应的16进制表示。第一种方法使用了sprintf函数来格式化输出,第二种方法则是通过强制类型转换将字符转换为无符号字符(unsigned char),然后使用printf函数输出对应的十六进制表示。

    2024年02月05日
    浏览(58)
  • Go语言核心编程-运算符和进制转换

    运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等 算术运算符 赋值运算符 比较运算符/关系运算符 逻辑运算符 位运算符 其它运算符 算术运算符是对数值类型的变量进行运算的,比如:加减乘除。

    2024年02月05日
    浏览(42)
  • 0基础学C#笔记03:进制转换

    首先我们知道在计算机当中所有的数据都是用二进制存储,但是我们不方便记忆、查看、使用,所以在代码当中一般使用的是十进制。不过其实我们在代码中我们可以直接使用二进制、十六进制或其它进制。 打印结果 十进制转二进制 打印结果 我们有时十进制转二进制时只会

    2024年02月16日
    浏览(27)
  • 二进制安全虚拟机Protostar靶场(2)基础知识讲解,栈溢出覆盖变量 Stack One,Stack Two

    Protostar靶场的安装和一些二进制安全的基础介绍在前文已经介绍过了,这里是文章链接 当系统向缓冲区写入的数据多于它可以容纳的数据时,就会发生缓冲区溢出或缓冲区溢出,用更简单的话说就是在程序运行时,系统会为程序在内存里生成一个固定空间,如果超过了这个空

    2024年02月09日
    浏览(39)
  • 饿补基础_1 |进位制、R进制之间转换及十进制编码

    1.你需要了解的概念 所谓进位计数制即按进位制的方法进行计数。 数制的组成: 基数R和各数位的权W。 基数为R的数制称为 R进制,特点逢R进一 基数R: 决定了各数位上允许出现的数码个数,比如十进制上允许出现10个数(0、1、2…9)。 权W: 表示该数位上的数码苏表示的单

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包