惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

faryou的博客

出租车上的对话 faryou的博客-告别小高一 faryou的博客-中考 · 竞赛 · 生活 · 思考 5月月考 - faryou的博客 - 日记 faryou的博客-五一回老家 【汇编 - 功能】中断安装中断实现 【汇编&硬件】时钟中断的具体实现 faryou的博客-这些年,我不再看《熊出没》 【汇编&硬件】关机中断的具体实现 【汇编&硬件】网络连接相关中断的具体实现 faryou的博客-年初小记 【汇编&硬件】鼠标控制中断的具体实现 【汇编&硬件】声音输出中断的具体实现 【汇编&硬件】屏幕输出中断的具体实现 【汇编&硬件】磁盘读取中断的具体实现 【汇编&硬件】键盘读取中断的具体实现 【汇编】汇编环境的搭建及Debug的使用教程 【汇编】漫谈:学习汇编后的一些思考 faryou的博客-关于本站即日起实行“一站三体”运营制度 【汇编基础教程】完结篇 写在最后:前言 【汇编基础教程】使用BIOS的中断实现键盘输入及磁盘I/O 【汇编基础教程】中断 【汇编基础教程】端口 【汇编基础教程】标志寄存器 【汇编基础教程】再谈栈 【汇编基础教程】段 【汇编基础教程】来存一些数据! 【汇编基础教程】寄存器和内存&一些基本命令的说明 【汇编基础教程】来写个“函数” 【汇编基础教程】更灵活的定位内存 【汇编基础教程】理解一下[bx]和loop指令 【汇编基础教程】跳一跳! faryou的博客-我的竞赛经历&对人生的一些思考 faryou的博客-关于现在中小学计算机课的一些想法及思考 faryou的博客-2025年度总结 faryou的博客-临平山下十五年 faryou的博客-Windows 10即将停止支持,谈谈自己从小到大用电脑的感受 faryou的博客-谈谈一名10后的怀旧情怀 【汇编基础教程】8086CPU工作原理 【C语言】指针的理解与应用 【算法教程】【C/C++】DP(动态规划):区间DP——程序设计思路与代码实现 【算法教程】【C/C++】BFS(广度优先搜索)——程序设计思路与代码实现 【算法教程】【C/C++】DFS(深度优先搜索)——程序设计思路与代码实现 【算法教程】【C/C++】单源最短路径——程序设计思路与代码实现 【算法教程】【C/C++】最小生成树——程序设计思路与代码实现 【算法教程】【C/C++】并查集——程序设计思路与代码实现 【算法教程】【C/C++】DP(动态规划):背包DP——程序设计思路与代码实现 【算法教程】【C/C++】DP(动态规划):简单动规问题——程序设计思路与代码实现 【算法教程】【C/C++】递推——程序设计思路与代码实现 【算法教程】【C/C++】三分算法——程序设计思路与代码实现 【算法教程】【C/C++】二分答案——程序设计思路与代码实现 【算法教程】【C/C++】二分查找——程序设计思路与代码实现 【算法教程】【C/C++】贪心算法——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:快排——程序设计思路与代码实现 【算法教程】【C/C++】基础数学:快速幂——程序设计思路与代码实现 一文弄懂C++中的自定义函数 faryou的博客-2024年度总结
【算法教程】【C/C++】基础数学:进制转换——程序设计思路与代码实现
作者: faryou · 2024-03-30 · via faryou的博客

前言
在学习计算机的过程中,我们会碰到不同的进制,如二进制、十六进制等。而这些进制之间的转换,又成为了一个问题。现在,我们来学习写一个程序,实现二~十六进制之间的进制转换。

程序设计思路
一般情况下,要解决一个算法问题,首先要在数学上解决它。进制就代表着满几进一。因此,我们在进制转换时,只需要不断地除以进制数,并将余数连起来,就是新的数了。在进制转换时,通尝使用短除法。如将256转换为十六进制数:

16 l 2 5 6
16 l 1 6············0
16 l 1············0
0············1

故256=0x100。
在真正的写程序的时候,由于十六进制中的10~15用字母A~F表示,因此我们不能直接用int相加,而应该用字符串存数据。

代码实现
以下为题目要求及代码:
202407051720140869844401.png

#include <bits/stdc++.h>
using namespace std;
int n,m,ten;//n、m为题目中原义,ten为被转换的数的十进制
char a[15],ans[15];//a存输入,ans存输出
int n_ten(int n){//n进制→十进制
  int answer=0;//answer为结果
  for(int i=0;a[i]!='\0';i++){//数学方式:十进制数=n进制数的第i位数*n^(i-1)
    if(a[i]>='0' && a[i]<='9') answer=answer*n+a[i]-48;
    if(a[i]>='A' && a[i]<='F') answer=answer*n+a[i]-55;
  }
  return answer;
}
void ten_m(int a,int m){//十进制→m进制,即上面的短除法
  int b=0,i=a;//b为计次,i为十进制数
  while(i>0){//在i除完之前循环
    if(i%m<=9) ans[b]=i%m+48;
    if(i%m>=10) ans[b]=i%m+55;
    i = (i-i%m)/m;
    b++;
  }
  return ;
}
//以上两个函数都使用了ASCLL码相关知识,请自行查表
int main(){
  scanf("%d%s%d",&n,a,&m);
  ten=n_ten(n);
  if(m!=10){
    ten_m(ten,m);
    int n=strlen(ans);//获取长度
    for(int i=n-1;i>=0;i--) printf("%c",ans[i]);
  }
  else printf("%d",ten);
  return 0;
}

结语
进制转换最主要是在数学上理解这个方法,之后就是对照数学方式写程序了。我是faryou,再见!