本文讲解2进制到16进制之间的进制转换,并通过两道例题,来帮助大家熟练掌握不同进制之间的转换方法。

掌握各种进制数与十进制之间的互相转化即可

网上许多教程都是举了一大堆例子,讲了各种数字进制间的转换,搞得初学者摸不着头脑。其实只要掌握各种进制数与十进制之间的互相转化即可。后面计算各个进制数间的转换过程中,拿十进制作为跳板就行了。

1、二、八、十六进制数如何转换成十进制数:

我们以11011这个数来举例:

二进制11011和八进制11011转换成十进制(规律很简单,看图就能懂):

十六进制也是这个规律,这里就不再阐述

2、十进制数转换成二、八、十六进制数:

我们以110这个数来举例:

 十进制110转换成二、八、十六进制(规律很简单,看图就能懂):

短除法求出余数,然后逆序输出余数就是结果(开头为0要舍去)

掌握以上两部分,也就是搞懂各进制数与十进制数之间的相互转换过程即可,其它进制间的转换只要将十进制数作为跳板就能推出来。比如八进制转换成十六进制,先把八进制转换成十进制,再将十进制转换成十六进制;二进制转换成八进制,先把二进制转换成十进制,再将十进制转换成八进制就行。

可以尝试下以下两道算法题,可以加深对进制转换的理解(这里用C++来讲解):

Acwing801. 二进制中1的个数 (涉及十进制与二进制间的转换

给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。

输入格式

第一行包含整数 n。

第二行包含 n 个整数,表示整个数列。

输出格式

共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。

数据范围

1 ≤ n ≤ 100000
0 ≤ 数列中元素的值 ≤ 10^9

输入样例:

5
1 2 3 4 5

输出样例:

1 1 2 1 2

 AC代码:

#include<bits/stdc++.h>
using namespace std;int main(){int n;cin >> n;int num;    int res;    int cnt = 0;while(n--){cin >> num;while(num){       //num不等于0时res = num % 2;    //类似短除法每一步求余数if(res == 1) ++cnt;    //余数是1,就让cnt+1num /= 2;        //因为是求二进制,所以每次都除以二}cout << cnt << " ";cnt = 0;}return 0;
}

洛谷P1143 进制转换  (涉及各种进制间的转换)

题目描述

请你编一程序实现两种不同进制之间的数据转换。

输入格式

共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10−15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

输出格式

一个正整数,表示转换之后的m进制数。

输入输出样例

输入 #1

16
FF
2

输出 #1

11111111

AC代码:

#include<bits/stdc++.h>using namespace std;int char_to_int(char a){    //字符转成数字的方法return '0' <= a && a <= '9' ? a - '0' : 10 + a - 'A'; } char int_to_char(int a){    //数字转成字符的方法return a <= 9 ? '0' + a : a - 10 + 'A'; }int main(){int output[35];int n,m,dec = 0,num = 0;string input;    //输入的数存储为字符串形式cin >> n >> input >> m;for(int i = 0; i < input.length(); i++){ //先转成十进制dec = dec*n + char_to_int(input[i]);}while(dec){    output[num++] = dec % m, dec /= m; //再通过十进制为跳板,转为其它进制数}for(int i = num - 1; i >= 0; i--){cout << int_to_char(output[i]);    //输出}cout << endl;return 0;}

整数进制转换技巧以及相关算法题讲解(简洁易懂)相关推荐

  1. 进制转换(非常详细+算法代码)

    --快开学了,进制转换忘了怎么办? --没事,看这篇博客保你信手拈来 ! --学不会呢? --****我!! 废话不多说,我们进入正题 : 常用的进制范围和其符号修饰: 二进制(B)---->0 ...

  2. c语言2进制16进制 表格,标题:整数进制转换(十六进制,十进制,二进制)--表格法...

    标题:整数进制转换(十六进制,十进制,二进制)--表格法 在计算机里,最基本的存储单位为字节(Byte,常说的大B),1个字节包含8位(bit,常说的小b).计算机的数据就是一个字节一个字节的形式存储 ...

  3. python 进制转换_Python数据结构与算法——递归应用之进制转换

    高考加油 在前面的文章中堆栈也用于进制转换(存放余数).而递归也可以用于进制转换,有固定模式循环,并且可以规模越来越小的问题都可以转换成递归 栈与递归之间一定有点联系 整数转换成任意进制 日常运算都是 ...

  4. 任意进制转换(转化器,算法,类)

    介绍 此类库支持2(二进制)到36之间任意进制的转换. 类库提供了一些常见的转换(如二进制到十进制),也支持高级的转换(如20进制到5进制) 快速使用:内置转换器 Convert.BinToDec.C ...

  5. 进制转换和位操作(详细,通俗,易懂)

    13.进制转换 13.1.明确:计算机中数字都是在内存中,并且数字都是以二进制的形式存储 13.2.明确:计算机中对数字的表示形式有四种: 2进制表示,8进制表示,10进制表示,16进制表示 不管是哪 ...

  6. 不怂Java进制转换(洛谷P1143题题解,Java语言描述)

    感慨 Java也能这么好使啊,不容易-- --进阶的JFarmer 题目要求 P1143题目链接 分析 进制转换其实也还好,但既然用了Java,那就得扬眉吐气一次,体会体会利用API轻松秒题的感受,机 ...

  7. 进制转换小技巧之让你重新认识二进制补码(大师,我悟了)!!!

    前言 我们都知道计算机内部是使用二进制来进行运算的,那么你对于二进制转换为其它进制或者其它进制数转换为二进制数是否熟练于心呢? 与我们现实中的十进制不同,计算机内部使用二进制表示(一般我们书写用十六进 ...

  8. C1任务1:进制转换 学习与技巧总结

    系列文章目录 C1 任务-01:进制转换 C1 任务-02:信息单位 C1 任务-03:数据校验 C1 任务-04:多媒体基础参数 C1 任务-05:HTTP 文章目录 系列文章目录 前言 一.进制定 ...

  9. 探索C/C++ 进制转换之美:从原理到应用

    一.简介 (Introduction) 进制 前缀表示 整数常量示例 转换库接口 参数及返回值示例 二进制 0b 或 0B 0b1010 std::bitset<> std::bitset ...

  10. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

最新文章

  1. C++中MessageBox的常见用法
  2. 在SpringBoot中使用SpringDataRedis
  3. c#sort升序还是降序_C#中对数组或集合进行升序或降序排序
  4. Long-read sequencing for improved analysis
  5. python扫雷代码_室友扫雷通关来炫耀!我用Python做出自动扫雷十秒通关!
  6. 敏捷开发框架_他山之石-敏捷开发管理框架在设计项目中的应用
  7. jsp form表里的submit点击没反应
  8. Spark加载外部配置文件
  9. Linux链接库三(C跟C++之间动态库的相互调用)
  10. 常用的Opencv函数汇总(持续更新...)
  11. 扫雷android源代码,Android实现扫雷小游戏
  12. 股票财务指标数据获取,附代码
  13. MDT+ADK网络部署操作系统
  14. [读书笔记] 有效竞品分析
  15. Verbatim字符串
  16. EC20模块内置协议栈的开发笔记
  17. CAD参数绘制文字(网页版)
  18. 揭开人创造思维之谜:浴缸和床最易引发灵感
  19. 解决JDBC中Parameter number X is not an OUT parameter
  20. 天猫精灵--智能家居接入(一)

热门文章

  1. 舆情热度实时数据查询分析怎么做的方法措施
  2. C语言练习①一英寸是多少厘米?
  3. Skiplist(跳表)的简单介绍与C++实现
  4. 适合外贸建站的vatage主题教程
  5. python多重背包_多重背包
  6. 基于Telink 825x Sdk上按键短按及长按的功能实现
  7. Android studio 打包 uni App 修改apk名称,app名称及图标
  8. 为什么说甲骨文裁员也属无奈之举?
  9. 笔记本光驱在计算机里不显示器,笔记本如何打开光驱_笔记本光盘怎么打开来...
  10. 迅雷出现应版权方要求,无法下载的解决办法