进制转换

Posted xzxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进制转换相关的知识,希望对你有一定的参考价值。

一、M进制转换成N进制(摘自博客:进制转换

1. 将M进制数x转化为十进制数y

十进制数的形式为:d1d2d3d4d5d6...dn = d1 × 10n-1 + d2 × 10n-2 + d3 × 10n-3 + ... + dn-1 × 101 + dn 

M进制数的形式为:a1a2a3a4a5a6...an = a1 × mn-1 + a2 × mn-2 + a3 × mn-3 + ... + an-1 × m1 + an

代码:

参考例题:把26进制转为10进制

 

2. 将十进制数y转化为N进制数x

该过程较为简单,常采用“除取余法”,基即为N,其对y不断地取余。

示例:十进制数11转化为二进制数。

对二不断取余:

  第一次: 11%2,余数为1,商为5

       第二次: 5%2,  余数为1,商为2

       第三次: 2%2,  余数为0,商为1

       第四次: 1%2,  余数为1,商为0

代码:

 

 

二、华为笔试题

题目一:将十进制数字转化为26进制数,其中26进制数使用A~Z来表示。

#include <cstdlib>  
#include <iostream>  
#include <string>  
#include <sstream>
#include <math.h>
using namespace std;
int main()
{
	string az("zabcdefghijklmnopqrstuvwxy");
	string dest,i;
	int number, number2;
	getline(cin, i);
	if(isdigit(i[0])){
		stringstream ss;
		ss << i;
		ss >> number;
		do
		{
			dest = az[number % 26] + dest;
			number /= 26;
		} while (number != 0);
		cout << dest << endl;
	}
	else{
		if (i.size() > 6) return 0;
		int output=0;
		for (int num1 = (i.size() - 1),num2=0; num1 >= 0; --num1,++num2){
			int j = (i[num1] - ‘a‘)+1;
			output += j*pow(26, num2);
		}
		cout << output  << endl;
	}
	system("PAUSE");
	return 0;
}

 

题目二:输入两个字符串,其中每个字符(‘a‘~‘z‘)都是二十六进制数,试求两个字符串相加的结果。

  

 

以上是关于进制转换的主要内容,如果未能解决你的问题,请参考以下文章

在代码片段中包含类型转换

sql 日期转换代码片段 - Dato,120,konvertere

php初步

android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错

HTML Bookmarklet模板:将任何JavaScript代码片段转换为Bookmarklet

go语言怎么将二进制转为字符串