进制转换(各种进制)--超详细proMax版本

目录

前言

一、什么是进制转换

​1.基本定义

2.进制转换本质

二、基本原理及C++代码示例

1.十进制转k进制

2.k进制转十进制

总结



前言

心血来潮,来写写进制转换proMax版本吧。


一、什么是进制转换

​1.基本定义

     进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。

2.进制转换本质

    “数制”只是一套符号系统来表示指称“量” 多少,就如我们用“1”这个符号来表示这一“量”的概念。自然界的“量”是无穷的,我们不可能为每个“量”都造一个符号,这样的系统没人记得住。所以必须用有限的符号按一定的规律进行排列组合来表示量。符号是有限的,而这些符号按照某种规则进行排列组合的个数是无限的。十进制就是10个符号的排列组合,二进制就是2个符号的排列组合。

     在进行进制转换时有一基本原则:转换后表达的”量"的多少不能发生改变。二进制中111个苹果和十进制的7个苹果是一样多的。

二、基本原理及C++代码示例

1.十进制转k进制

我们以十进制转二进制为例

 对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

  对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直到结果的小数部分为0为止。故称为“乘基取整法”。

具体过程如图所示:

C++代码示例:

#include<bits/stdc++.h> 
using namespace std;
const int N = 1e5 + 10;
int arr[N];
int n, k, y = 0; //n表示需转换的数字,k表示多少进制

int main() {
	cin >> n >> k;
	while (n != 0) {
		y++;
		arr[y] = n % k;
		n /= k;
	}
	for (int i = y; i > 0; i--) {
		cout << arr[i];
	}
	return 0;
}

2.k进制转十进制

k进制转十进制相对来说就比较简单了,只要k进制数每一位乘以k的幂次方,然后直接累加即可。

话不说,直接上代码

C++代码演示:

#include<bits/stdc++.h>
using namespace std;
int main() {
	int k, n = 0; //k表示一个二级制数,n表示最终得到的十进制数
	int lent = 0; //表示对应的多少幂次方
	cin >> k;
	while (k != 0) {
		int last_num = k % 10; //last_num表示二进制数最后一位上的数字
		n += last_num * pow(2, lent);
		lent++;
		k /= 10;
	}
	cout << n;
	return 0;
}


总结

好了,拖拖拉拉终于把这篇博客写完了(手动尴尬),希望这篇文章对你有帮助吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值