【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

相关文章
|
分布式计算 Java 大数据
震精,京东T8工程师每天熬夜到天明,竟只是为一套编程实战文档
大数据开发工程师系列共六本,包括Java面向对象编程、Java核心API编程、Java Web开发实战、MySQL数据库开发实战、SSM企业级框架实战、Hadoop & Spark大数据开发实战,一套比较全面的开发工程师书籍。
|
小程序 Python
牛客网Python入门103题练习|(03--字符串)
牛客网Python入门103题练习|(03--字符串)
431 2
|
前端开发
#yyds干货盘点 歌谣学前端之react笔记之学习日历样式的设置
#yyds干货盘点 歌谣学前端之react笔记之学习日历样式的设置
244 0
#yyds干货盘点 歌谣学前端之react笔记之学习日历样式的设置
|
机器学习/深度学习 算法 Java
算法基础学习1——时间复杂度和空间复杂度
算法基础学习1——时间复杂度和空间复杂度
250 0
算法基础学习1——时间复杂度和空间复杂度
|
大数据 Apache Python
Koalas:让 pandas 轻松切换 Apache Spark
4 月 24 日,Databricks 在 Spark + AI 峰会上开源了一个新产品 Koalas,它增强了 PySpark 的 DataFrame API,使其与 pandas 兼容。本文转自:https://www.infoq.cn/article/tvGrtwJxCR1kQDs_kqa4
|
网络协议 Shell 网络安全
|
8天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1396 10