二进制,八进制,十进制,十六进制的相互转换【简单易懂】(含代码模板)

简介: 二进制,八进制,十进制,十六进制的相互转换【简单易懂】(含代码模板)

二进制转十进制

十进制原理:

为了方便学习二进制,我们先来看一下十进制的原理,十进制的特点就是有10个符号来表示一个数字,分别是0123456789;就比如这个数字235,他的个位是5,代表5个1 ,十位是3,代表3个10,百位是2,代表两个100,这个数字就代表这三个值的和。换一种方式来表示,他就是5×10^0加上3×10^1加上2×10^2也就是200+30+5,最后得出了235;


二进制其实也是一样的原理,再十进制中有10个可用的符号来表示一个数字,在二进制中呢,就只用两个可用的符号来表示一个数字,分别是0和1。在十进制中,我们可以把0-9种不同的符号放到不同的位中,组成各种各样的数字,在二进制中,我们把0和1两种不同的符号,放入不同的位中,同样可以组成各种各样的数字。

二进制转十进制计算:

如数字1011,我把这个二进制数字放在这个十进制数字的边上,这样我们就可以模仿刚才我们算十进制的方法,把这个二进制数字算出来。在我们刚才算十进制的过程中,从右边数第一位需要乘以2的零次方、第二位乘2的一次方……(如图),将所以乘数相加就是十进制表示

八、十六进制转十进制

我们现在知道了⒉进制怎么转成10进制,八进制和十六进制又是怎么回事儿呢。其实都是一样的原理,十进制有十个符号表示一个数字,二进制有两个符号表示一个数字,八进制有8个符号用来表示一个数字。分别是01234567,十六进制有16个符号来表示一个数字分别是0123456789ABCDEF。

八、十六进制转十进制计算:

八进制的0到7就对应十进制的0到7,十六进制的0到F就对应十进制的0到15。(如上图)


我们来看一个八进制的数字,227,我们还是用和刚才同样的方法来计算,从右边数第一位的7乘以8的0次方,第二位7乘以8的1次方,第三位的7乘以8的2次方,也就是2×64 + 7×8  +7×1,最后得出128+56+7=191,也就是8进制中的二二七等于十进制中的一九一;


十六进制同理可得,只需要把ABCDEF转化成对应的十进制即可;

十进制转其他进制

我们现在知道了每个进制怎么转换成十进制,那么,十进制的数字怎么转换成其他进制呢?一个普遍的方法就是连除法

十进制转二进制

对于这个十进制数字29来说,如果要转换成二进制,我们就把他先除以2,得到14余1、再把14除以二,得到7余0,再把7除以二,得到3余1,再把3除以二,得到1余1,再把1除以二,得到0余1,一直除到到这个商等于0,就可以结束了,最后把得出来的最右边的这一列余数从下往上反向排列,就可以得出一个二进制数11101,我们就成功的把这个十进制数字29转换成了二进制数字11101

十进制转八进制:

我们同样可以用连除法把十进制数字转换成8进制, 比如说这个十进制数字900,我们把它先除以8得到112余4,再把112除以8得到14余0,再把14除以8得到1余6,再把1除以8得到0余1,直到商等于0,就可以结束了,最后把得出来的最右边的这一列余数从下往上反向排列,就可以得出一个二进制数1604

十进制转十六进制:

与上文同理,字母转换即可

不同进制之间的相互转换

拿二进制转八进制举例,由于2的三次方为8, 所以每3位可以转换为1位八进制; 如二进制10111001前面的001等于1*2^0+0*2^1+0*2^2,和为八进制的1,以此类推得2 7 1,那么二进制10111001转化为八进制就是271(十六进制同理)


笔记篇,素材来源于up主“我是2045” ;

练一练手:

P1143 进制转换

#include<bits/stdc++.h>
using namespace std;
string s;
int a,b;
int wei,sum,num;
int c[10000010];
int main()
{
  cin>>a>>s>>b;
  for(int i=0;i<s.size();i++)
  {
    if(s[i]<'A')
    {
      wei=pow(a,s.size()-1-i);    //从大向小取位
      wei*=(s[i]-'0');
      sum+=wei;
    }
    else
    {
      wei=pow(a,s.size()-1-i);
      wei*=(s[i]-'A'+10);
      sum+=wei;
    }
  }
                                       //sum为a进制转化为十进制的值
  while(sum>0)
  {
    c[num++]=sum%b;    //连除法
    sum/=b;
  }
  for(int i=num-1;i>=0;i--)    //对应前面,“从下到上输出”
  {
    if(c[i]>=10) printf("%c",c[i]+'A'-10);    //可能是字符,cout默认数字
    else cout<<c[i];
  }
  return 0;
}
相关文章
|
Shell 开发工具 git
brew - 常用命令
brew - 常用命令
1407 0
|
BI Windows
Qt 报表实现简述(一)
Qt 报表实现简述(一)
375 1
|
存储 前端开发 Java
spring boot 实现Minio分片上传
spring boot 实现Minio分片上传
1297 1
|
JSON 数据格式
易语言 精易模块 操作json数据
作者主页:https://www.couragesteak.com/
易语言 精易模块 操作json数据
|
4月前
|
运维 监控 测试技术
2025年微服务架构关键知识点(一):核心原则与演进趋势
微服务架构凭借其高可用性、灵活扩展等优势,已成为2025年主流软件开发范式。本文深入解析微服务的核心原则、演进趋势及实践要点,助力开发者夯实基础,应对挑战,构建高效、稳定的系统架构。
|
数据库管理
SVN 执行cleanup报错:Cleanup failed to process the following paths : 解决方法
引用:https://www.cnblogs.com/pinpin/p/11395438.html 在SVN更新时提示文件被锁住了,要求执行 clean up操作,执行clean up时又报clean up failed。造成的原因是在某次更新后,点击了cancel按钮,操作没有完成所以会锁住。解决方法如下:
2539 0
|
Java 开发者
如何通过易语言多线程提升程序响应速度?
如何通过易语言多线程提升程序响应速度?
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节
1154 0
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
405 1
|
机器学习/深度学习 自然语言处理 物联网
ICML 2024:脱离LoRA架构,训练参数大幅减少,新型傅立叶微调来了
【6月更文挑战第4天】在ICML 2024上,研究团队提出了傅立叶变换微调(FourierFT),一种减少训练参数的新方法,替代了依赖LoRA的微调。FourierFT通过学习权重变化矩阵的稀疏频谱系数,实现了LFMs的高效微调。在多项任务上,FourierFT展示出与LoRA相当或更优的性能,参数量却大幅减少,如在LLaMA2-7B模型上,仅需0.064M参数,对比LoRA的33.5M。广泛实验验证了其在NLP和CV任务上的效果,但未来还需探索其适用性和泛化能力。论文链接:[arxiv.org/abs/2405.03003](https://arxiv.org/abs/2405.03003)
402 0

热门文章

最新文章