当前位置: 首页 > news >正文

c++之基础B(x转10进制,含十六进制)(第四课)

1.前文

2.正文(加遗漏)

2.1x进制转十进制

2.1.1二进制转十进制

2.1.2 八进制转十进制

2.2 十六进制转十进制

2.3 十进制转十六进制

1.前文

好吧,上一次的文章少了十转十六进制的,今天一起补上

2.正文(加遗漏)

2.1x进制转十进制

2.1.1二进制转十进制

这个代码关于权重,我就先简略介绍一下吧

权重,就是指这个位数上的数的数值是多少

比如:

32   16   8   4   2   1

1     1     0   1   1   0

为零的数位上就不计算(也可以计算,装b吗,谁不会呀)

所以,这个二进制数,转成十进制数算式就是这样

(从低位到高位算)

=0*1+1*2+1*4+0*8+1*16+1*32

=0+2+4+0+16+32

=54

所以,我们就要定义一个变量,q(权重的简称(权)的首字母)

然后,就要把代码给放出来了

#include<bits/stdc++.h>
using namespace std;
int main()
{int k,q=1,sum=0;//k是来储存每一位上的数字的string s;cin>>s;int n=s.size();for(int i=n-1;i>=0;i--)//从低位到高位取 {k=s[i]-'0';//将每一位数字字符转成数字 sum=sum+k*q;//乘权重求和q=q*2;//每往前一位,权重扩大2倍,毕竟是二进制转十进制吗}cout<<sum;return 0;
}

2.1.2 八进制转十进制

一样,把第十三行的q=q*2改成q=q*8就行了

#include<bits/stdc++.h>
using namespace std;
int main()
{int k,q=1,sum=0;//k是来储存每一位上的数字的string s;cin>>s;int n=s.size();for(int i=n-1;i>=0;i--)//从低位到高位取 {k=s[i]-'0';//将每一位数字字符转成数字 sum=sum+k*q;//乘权重求和q=q*8;//每往前一位,权重扩大8倍,毕竟是八进制转十进制吗}cout<<sum;return 0;
}

2.1.3 十六进制转十进制

接下来,就是重头戏登场了

首先,十六进制与其他进制不同的是

10=A   11=B   12=C   13=D   14=E   15=F

然后,就是取余

如果取余的数字小于等于9

就把数字字符转成数字

否则,把字母字符转成数字,把这个数减‘A’加10(或直接加55)

如果你不知道为什么要加上55,请看VCR

字符       ASCLL码

A                 65

B                 66

C                 67

D                 68

E                 69

F                 70

举个栗子,,15+55=70

70转成ASCLL码就是F

#include<bits/stdc++.h>
using namespace std;
int main()
{int k,q=1,sum=0;string s;cin>>s;int n=s.size();for(int i=n-1;i>=0;i--)//从低位到高位取 {if(s[i]>='A'&&s[i]<='F'){k=s[i]-'A'+10;//将每一位字母字符转成数字 }else{k=s[i]-'0';//将每一位数字字符转成数字 }sum=sum+k*q;//乘权重求和q=q*16;//每往前一位,权重扩大16倍 }cout<<sum;return 0;
}

懂?

2.2遗漏掉的十转十六进制

跟之前差不多(第一个for循环)

    int a[105];

    int n,cnt=0;
cin>>n;
for(int i=n;i>=1;i=i/16)
{
cnt++;
a[cnt]=i%16;
}

如果a[i]是个位数,就直接输出

否则输出a[i]加55的char类型

代码,即:

#include<bits/stdc++.h>
using namespace std;
int a[105]; 
int main()
{int n,cnt=0;cin>>n;for(int i=n;i>=1;i=i/16){cnt++;a[cnt]=i%16;}for(int i=cnt;i>=1;i--){if(a[i]<=9)//个位数直接输出 {cout<<a[i];}else//不是个位需要转成字符 {cout<<char(a[i]+55);}}return 0;
}

(逃!)

新手小白(基础A,不过讲的是基础B)

http://www.xdnf.cn/news/1476019.html

相关文章:

  • 7.网络虚拟化
  • 【开题答辩全过程】以 基于Hadoop电商数据的可视化分析为例,包含答辩的问题和答案
  • Lua和C#比较
  • 分布式go项目-搭建监控和追踪方案补充-ELK日志收集
  • OpenHarmony之有源NFC-connected_nfc_tag模块详解
  • LangChain实战(十八):构建ReAct模式的网页内容摘要与分析Agent
  • 同一台nginx中配置多个前端项目的三种方式
  • 贪心算法在脑机接口解码问题中的应用
  • qiankun 微前端接入实战
  • 在线教育系统源码选型指南:功能、性能与扩展性的全面对比
  • import type在模块引入中的作用
  • 从“能说话”到“会做事”:AI工具如何重塑普通人的工作与生活?
  • 语义切片技术深度解析:重新定义RAG时代的文本处理范式
  • 分布式通信平台测试报告
  • 【Neovim】Vi、Vim、Neovim 与 LazyVim:发展史
  • 【开题答辩全过程】以 “爱心”家政管理系统为例,包含答辩的问题和答案
  • Linux/UNIX系统编程手册笔记:共享库、进程间通信、管道和FIFO、内存映射以及虚拟内存操作
  • 宝塔PostgreSQL安装pgvecto插件contrib包实现向量存储
  • 2025年渗透测试面试题总结-54(题目+回答)
  • rom定制系列------小米8“无人直播”虚拟摄像头 刷机固件 实现解析过程
  • `vector_ip_ops`(内积操作)和 `vector_cosine_ops`(余弦相似度操作)的不同
  • 详解 ELO 评分系统
  • [光学原理与应用-414]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 柱面镜:光学系统中的一维(焦线)调控专家(传统透镜是0维的点)
  • 《用 asyncio 构建异步任务队列:Python 并发编程的实战与思考》
  • java分布式场景怎么实现一个高效的 读-写锁
  • 友猫社区APP源码与小程序端部署详解
  • Redis数据库基础
  • MySQL中有哪些锁
  • MathJax - LaTeX:WordPress 公式精准呈现方案
  • Android Studio 构建变体中的资源选择顺序详解