进制转换

 

一、二进制转十进制

    讲十进制n转换为二进制数

/*
   十进制转换二进制(n)
   1、n % 2 作为二进制的最末尾
   2、n /= 2;
   3、重复1 2步直到n==0
*/
void Shift1(int n)//非递归写法
{
	if(n==0)
	{
		printf("%d",0);
	}
	int a[100];
	int i = 0;
	while(n!=0)
	{
		a[i] = n % 2;
		i++;
		n /= 2;
	}

	for(int j=i-1;j>=0;j--)
	{
		printf("%d",a[j]);
	}
	printf("\n");
}

void Shift2(int n) //递归写法
{
	if(n==0)
	{
		return ;
	}
	else
	{
		Shift2(n/2);
		printf("%d",n%2);
	}
}
   十进制转换二进制(n)
   1、n % 2 作为二进制的最末尾
   2、n /= 2;
   3、重复1 2步直到n==0
*/
void Shift1(int n)//非递归写法
{
	if(n==0)
	{
		printf("%d",0);
	}
	int a[100];
	int i = 0;
	while(n!=0)
	{
		a[i] = n % 2;
		i++;
		n /= 2;
	}

	for(int j=i-1;j>=0;j--)
	{
		printf("%d",a[j]);
	}
	printf("\n");
}

void Shift2(int n) //递归写法
{
	if(n==0)
	{
		return ;
	}
	else
	{
		Shift2(n/2);
		printf("%d",n%2);
	}
}

二、二进制转十进制

二进制数转换为十进制数

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……

所以,设有一个二进制数:0110 0100,转换为10进制为:

下面是竖式:

0110 0100 换算成十进制

第0位 0 * 2^0 = 0

第1位 0 * 2^1 = 0

第2位 1 * 2^2 = 4

第3位 0 * 2^3 = 0

第4位 0 * 2^4 = 0

第5位 1 * 2^5 = 32

第6位 1 * 2^6 = 64

第7位 0 * 2^7 = 0

公式:第N位2^(N)

100

用横式计算为:

0 * 2^0 + 0 * 2^1 + 1 * 2^2 + 0 * 2^3 + 0 * 2^4 + 1 * 2^5 + 1* 2^6 + 0 * 2^7 = 100

0乘以多少都是0,所以我们也可以直接跳过值为0的位:

1 * 2^2 + 1 * 2^5 +1*2^6 = 100

 

三、十进制转八进制

         十进制转八进制和十进制转二进制类似,唯一不同的时除数变成8

120转化为8进制
被除数计算过程余数
120120/8150
1515/817
11/8

 

0

 

1

     因此120转换为八进制为:170

 四、八进制转化为十进制

    类似于二进制转换为二进制转换为十进制

五、二进制与其他进制之间的转换

    二进制->八进制                                                                 八进制->二进制

010  110  110                                                                     1     2      4     5

  2       6     6                                                                      001 010 100 101

因此二进制数010110110转换为八进制为266;  因此八进制数1245转换为二进制为001010100101

    二进制->十六进制                                                            十六进制->二进制

0101  1110  1010  1010  1001  0101                                 9         a        8        f         7

   5        e        a         a        9       5                                  1001  1010  1000  1111  0111

因此二进制数转换为十六进制为:5eaa95; 因此十六进制数9a8f7转换为二进制为:10011010100011110111

 

六、其他进制可以通过以上进制的转换进行转换

  例:

       八进制->十六进制  可转换为  八进制->二进制->十六进制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值