进制转换的那些事

本篇以C语言中常用的数值: 二进制、八进制、十进制、十六进制,来说明进制之间是如何转换的

进制就是用来表示数值的方法,一个数值可以用多种进制表示

一、 其他进制转换为十进制

对于一个 X 进制的数,每一位的数字只能为 0 ~ X - 1,每一位都是存在权重的,其权重的基数就是 X

进制将对应位的数字乘以权重,然后相加,即为该进制数转化的十进制数

进制转换


二、 其他进制转换为二进制

在可以解释问题的前提下,为了避免产生不必要的麻烦,这里采用无符号整形

//打印二进制位,只适用于非负整数
void print_bit(unsigned int n)
{
	if (n != 0)
	{
		print_bit(n >> 1);
		printf("%d", n % 2);
	}
}

#include <stdio.h>

int main()
{
	//以 0 开头表示八进制数
	unsigned int a = 037;

	//十进制数
	unsigned int b = 16;

	//以 0x 开头表示十六进制数
	unsigned int c = 0x2a;

	print_bit(a);
	printf("\n\n");
	print_bit(b);
	printf("\n\n");
	print_bit(c);
	printf("\n\n");

	return 0;
}

对上述代码结果进行分析

1. 八进制转二进制

进制转换

2. 十进制转二进制

在这里插入图片描述

3. 十六进制转二进制

在这里插入图片描述

三、 一些进制转换

  • 二进制转八进制:
    既然一个八进制位相当于三个二进制位,那么三个二进制位也相当于一个八进制位
  • 二进制转十六进制:
    既然一个十六进制位相当于四个二进制位,那么四个二进制位也相当于一个十六进制位
  • 十进制转其他制:
    只需要将公式:X = (X / Y)* Y + X % Y 中 Y 换成需要转换的进制即可,其他步骤与十进制转二进制类似

四:补充

1. 十进制整数部分转换二进制(短除法)及 十进制小数部分转换二进制

进制转换
十进制转换为 R 进制整除 R 倒取余即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值