C++进制转换

前言

在计算机学中,有很多的进制,像计算机用的二进制,人们使用的十进制,还有能表示颜色的十六进制,今天,我们就来学习这三种进制之间常见的转换方式

1.10=>2 十进制比较常见的转换方法是用短除法(对,你没听错,就是数学里的短除法)见下图在这里插入图片描述

如图,转换方式是拿样例15对2取余,再把余数从下往上进行表示,最后得到的就是结果
讲完日常的转换方式,再来看一看在C++里如何表示

#include<bits/stdc++.h>
using namespace std;
string s;//用来存放结果的s 
int main(){
long long n;
cin>>n;//输入十进制数n 
while(n!=0){
	s+=('0'+n%2);//存入字符串 
	n/=2;//为了把算过的去掉 
}
for(int i=s.size()-1;i>=0;i--) cout<<s[i];//倒序输出 
	return 0;
}


2.10=>16 与十转二一样,都是用短除法,但有一点不同,由于16进制的数有可能超过9,这就不在数字的表示范围内了,所以在十进制中的10~15在16进制里用A-F来表示。(如下图)

在这里插入图片描述

再来看一看在程序里的表示

#include<bits/stdc++.h>
using namespace std;
string s;//存储结果 
int main(){
long long n;
cin>>n;//输入十进制数
while(n!=0){
	int c=n%16;
	if(c<=9) s+=('0'+c);//小于十..... 
	else s+=('A'+c-10);//如果大于十..... 
	n/=16;
} 
for(int i=s.size()-1;i>=0;i--) cout<<s[i];//倒序输出 
	return 0;
}

小结

综合以上的两个方法,可以总结出一个规律,那么就是:
十进制的n转m进制
用n对m连续取余,直到商为零停止,然后将余数倒着表示就是结果
以下是程序表示(m<16)

#include<bits/stdc++.h>
using namespace std;
string s;//存储结果 
long long n,m;
int main(){

cin>>n>>m;//输入十进制数与要转换的进制 
while(n!=0){
	int c=n%m;
	if(c<=9) s+=('0'+c);//小于十..... 
	else s+=('A'+c-10);//如果大于十..... 
	n/=16;
} 
for(int i=s.size()-1;i>=0;i--) cout<<s[i];//倒序输出 
	return 0;
}

未完待续:进制转换(2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值