【c++】关于数值进制以及进制之间转化
【摘要】 关于数值进制以及进制之间转化问题C++代码如何实现不同进制的转化以十进制与八进制和转换为例 递归方法#include <iostream> using namespace std;int sb(int n) { if(n<8)return n; else return n%8+10*(sb(n/8));//递归思想关于进制转化 }int main() { int ...
关于数值进制以及进制之间转化问题
C++代码如何实现不同进制的转化
以十进制与八进制和转换为例
递归方法
#include <iostream>
using namespace std;
int sb(int n)
{
if(n<8)return n;
else
return n%8+10*(sb(n/8));//递归思想关于进制转化
}
int main()
{
int n;
cin>>n; //获取10进制数
cout<<sb(n)<<endl; //利用递归函数
return 0;
}
循环方法
#include<iostream>
using namespace std;
long long sum=0,b=1,x=1;
int a;
int main()
{
cin>>a;
while(a!=0)
{
sum=sum+(a%8)*x;
a/=8; //a=a/8
x*=10; //x=x/10
}
cout<<sum<<endl;
return 0;
}
10转16进制
10转16进制
#include<iostream>using namespace std;
char exchange(int n)
{ switch(n)
{ case 0: return '0';break;
case 1: return '1';break;
case 2: return '2';break;
case 3: return '3';break;
case 4: return '4';break;
case 5: return '5';break;
case 6: return '6';break;
case 7: return '7';break;
case 8: return '8';break;
case 9: return '9';break;
case 10: return 'A';break;
case 11:return 'B';break;
case 12:return 'C';break;
case 13:return 'D';break;
case 14: return 'E';break;
case 15:return 'F';break;}}
int main(){
int m,note,i=0,s=0;
cin>>m;
note=m;
while(m/16!=0)
{ i++; m=m/16; }
char a[i];
while(note/16!=0)
{ a[s]=exchange(note%16);
s++;
note=note/16; }
a[i]=exchange(note);
for(int j=i;j>=0;j--)
{cout<<a[j];
}cout<<endl; return 0;}
为神魔会有不同进制
进制的产生一定是为了更好的表达或记录。
在我们的生活中表达某个数的时候,比如成绩多少,这样的数都是十进制数。十进制数有10个数0,1,2,3,4,5,6,7,8,9。
十进制“逢十进一”这个大家都知道,生活中也有其它进制,比如时间的分秒数是60进制,角度是360度进制。
而在计算机里使用二进制的,因为计算机只能表示两个状态0,1,(0好比开关关,1可以表示成开关接通)。所以计算机只能“认识”二进制数。二进制“逢二进一”。
大家可能也知道还有八进制、十六进制,哪为什么有二进制还要其它进制?
可以想下,人类用十进制,计算机用二进制,但如果想要更好的去研究和理解计算机的运作时,光用二进制表达和描述会非常不直观、不方便。因为二进制太长了,比如一个整数(十进制),32位机中二进制有32位。如果用十六进制就只要8位,表达和描述上会方便很多,互转时也可以直接转,不像十进制哪样复杂。(因为8,16,是2的3,4次方)
不同进制的表示方法及转换运算
BIN 二进制 OCT八进制 DEC十进制 HEX十六进制
十进制转二进制使用短除法:
二进制转十进制位权展开法:
二进制转八进制:将3位转为1位
八进制转二进制:变1位为3位
二进制转十六进制:4位转1位
十六进制转二进制:1位变4位
举个栗子吧
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)