【c++】关于数值进制以及进制之间转化

582 阅读1分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

关于数值进制以及进制之间转化问题

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进制

1016进制
#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位

举个栗子吧进制转换