C语言进制转换(十进制转n进制)

  • 初识计算机语言我们会了解到计算机内部是采用二进制计算的,因此我们会对10进制数字转换成2进制数字比较熟悉,比如十进制1即为二进制0001,十进制10为二进制0101…(这里取四位举例)。但这其中转换的数学方法是什么呢?
  • 这里运用的是模2除2的思想,即现对2取模,再除以2,下面我会画图解释:以十进制10转换为二进制1010为例:
    在这里插入图片描述
  • 这两步操作即为转换方法的核心思想,取模代表的是取出二进制表达中的最后一位,除2代表消去最后一位,如上图,10对2取模之后,得到0,即1010的最后一位0,随后10除以2得到5,不难发现5的二进制表达为101,是1010将最后一位0去掉的结果。下面我们重复以上操作,直到除以2得到的是0结束。
    在这里插入图片描述
  • 经过这八步,将每次取模得到的数字组合起来即为1010,转换成功。这样的不断%2 ,/2的过程我们可以用循环来实现。
int main()
{
	int arr[20] = { 0 };
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	while (n)
	{
		arr[i++] = n % 2;//运用%2 ,/2的方法
		n /= 2;
	}
	for (--i; i >= 0; i--)//由于存进去的顺序是反的,要倒着打印出来
	{
		printf("%d", arr[i]);
	}
	return 0;
}
  • 关于为什么%2可以得到最后一位我们可以这样理解:我们遇到过一种问题让我们取出十进制数字的每一位,比如123,我们运用的方法就是先对123%10,得到3,即最后一位,第二步我们再对123/10,得到12,即123去掉最后一位3的结果,以此类推即能得到123的每一位1,2,3。
  • 上述是十进制数得到十进制每一位的办法即%10,/10,那么可以进行类比,十进制得到其二进制表达的每一位我们就%2,/2,我们还可以得到其六进制表达的方法,即%6,/6
    在这里插入图片描述
  • 如上图代码,我们可以用%6,/6的方法轻松得到十进制数10的六进制表示14。
  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值