【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 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十六进制

1665238113419.png


十进制转二进制使用短除法:


image.png


二进制转十进制位权展开法:


image.png


二进制转八进制:将3位转为1位


image.png


八进制转二进制:变1位为3位


image.png


二进制转十六进制:4位转1位


image.png


十六进制转二进制:1位变4位


举个栗子吧

image.png

相关文章
|
12月前
30.【十进制和二进制的相互转化(超详解)】
30.【十进制和二进制的相互转化(超详解)】
82 0
|
4月前
两个方法实现 任意两个进制间相互转换
两个方法实现 任意两个进制间相互转换
22 0
两个方法实现 任意两个进制间相互转换
|
4月前
进制转换(m 进制 x 转换为 n 进制的数)
进制转换(m 进制 x 转换为 n 进制的数)
|
4月前
|
C++
十进制二进制相互转化C++
十进制二进制相互转化C++
16 0
进制之间的转换
说明:进制之间的转换有多种,我只列出自己常使用的方法。 十进制:十进制是以 0-9 这九个数字组成的,也是我们日常生活中最常见的数字 二进制:二进制是 0 和 1 这两个数字组成的,一般常用于计算机中表示 八进制:八进制是 0-7 这八个数字组成的,为了区分,一般开头以 0 开头 十六进制:十六进制由 0-9 和A-F 组成,从 A-F 为 10-15,为了区别,开头以 0x 开头
|
C语言
整数和浮点数的任意进制转!!(包括16进制)确定不进来看看?!
整数和浮点数的任意进制转!!(包括16进制)确定不进来看看?!
134 0
一种基于质数(2、3、5、7、11…)的变进制数,第一位为2进制,第二位为3进制,第三位为5进制,以此类推。请将该变进制数转化为十进制数。
一种基于质数(2、3、5、7、11…)的变进制数,第一位为2进制,第二位为3进制,第三位为5进制,以此类推。请将该变进制数转化为十进制数。
147 0
一种基于质数(2、3、5、7、11…)的变进制数,第一位为2进制,第二位为3进制,第三位为5进制,以此类推。请将该变进制数转化为十进制数。
【c++】关于数值进制以及进制之间转化
【c++】关于数值进制以及进制之间转化
174 0
【c++】关于数值进制以及进制之间转化
018.任意进制数的转换
018.任意进制数的转换
87 0