将二进制、八进制、十六进制转换为十进制

二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

假设当前数字是 N 进制,那么(只讲整数的转换)

  • 对于整数部分,从右往左看,第 i 位的位权等于Ni-1
  • 对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j。

例如,将八进制数字 53627 转换成十进制:

53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… 第n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

再如,将十六进制数字 9FA8C 转换成十进制:

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

将二进制数字转换成十进制也是类似的道理:

11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

从右往左看,第1位的位权为 20=1,第2位的位权为 21=2,第3位的位权为 22=4,第4位的位权为 23=8,第5位的位权为 24=16 …… 第n位的位权就为 2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

加个不知道对不对的代码:

#include<iostream>
#include<string>
using namespace std;string s;
int n;
int a=0;
int main() {
cin>>s;
cin>>n;
for(int i=0;i<s.size();i++){if(s[i]>'9'){a=a*n+s[i]-'A'+10;}else{a=a*n+s[i]-'0';}
}
cout<<a;return 0;
}

其他进制转化为十进制 详解相关推荐

  1. java里的进制转换函数_基于Java中进制的转换函数详解

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  2. 八进制数字字符转化为十进制详解

    #include <stdio.h> #include <stdlib.h> #include <string.h> int fun( char *p ) { in ...

  3. js模拟栈---进制转化。十进制转任意进制进制,任意进制转十进制

    var Stack = (function(){var items = new WeakMap();//先入后出,后入先出class Stack{constructor(){items.set(thi ...

  4. 任意进制转化为十进制(模板)

    //任意进制数字转化为十进制 int convert(int val,int base) {int ans=0,wight=1,r;while(val){r=val%10;val/=10;if(r&g ...

  5. 进制间的相互转换方法详解(配案例)

    = = = = = 进制及相互转换 = = = = = 一.进制介绍: 对于整数,有四种表示方式: 1.二进制:0,1,满2进1.以0B或0b开头. 例:int n1 = 0b1010; 2.十进制: ...

  6. 每日一题-20200422-二进制转化为十进制

    题目 代碼 #include <stdio.h>int main() {printf("请输入一个整数:");int n;scanf("%d",&a ...

  7. C++实现九进制转化十进制

    复杂版如下: 这个用到的方法是进制转化公式 如这个八进制转化十进制: 同时用到了数字转化字符串,字符串转化数字. #include <bits/stdc++.h> using namesp ...

  8. 【PAT - 甲级1010】Radix (25分)(二分,进制转化)

    题干: Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? Th ...

  9. 【风马一族_C】进制转化

    1 #include "stdio.h" 2 #include "Math.h" 3 #define number 50 //设置数组的长度 4 5 int n ...

  10. 计算机组成原理——基本组成 进制转化 奇偶校验 原码 反码 补码 移码 移位 原码补码乘法除法 IEEE754 加法器ALU

    笔记来源于王道考研视频 第一章 通过电信号传递信息(低电平代表0,高电平代表1) 计算机系统 计算机系统=硬件+软件 软件 系统软件 应用软件 操作系统,数据库管理系统(DBMS),标准程序库(编程时 ...

最新文章

  1. POJ 1279 Art Gallery 半平面交 多边形的核
  2. MySql之自动同步表结构
  3. 5、Flutter 实现 ViewPager、bottomNavigationBar 界面切换
  4. iphone mac地址是否随机_iOS8随机MAC地址功能:需要满足前提要求
  5. pythoncsv文件处理_Python处理ExcelCSV文件
  6. matlab 分隔线,matlab字符分割方法
  7. NotificationManager滑动不退出_退出支付宝的相互宝大病互助计划居然需要8个步骤!...
  8. go插件 vscode 报错_MacOS中 VSCode 安装 GO 插件失败问题的快速解决方法
  9. 编译安装nginx-1.6.0
  10. SAS的安装过程和遇到的问题(提供安装包)
  11. 操作系统实验·字符设备驱动程序
  12. GB50052-2009供配电系统设计规范1
  13. 戴尔台式计算机主板型号,如何查看戴尔主板型号_查看戴尔主板型号的步骤-系统城...
  14. 燃烧你的大脑,10个创意机器人闹翻天!
  15. 幼麟棋牌登录socket服务器分析
  16. 首届广西网络安全技术大赛初赛通关攻略
  17. 商务部关于网上交易的指导意见(暂行)
  18. 【Gulimall+】第三方服务:对象存储OSS、短信验证、社交登录、支付宝支付
  19. parsec使用教程
  20. FreeBSD 背景

热门文章

  1. jenkins发送构建邮件配置项中文
  2. JAVA接口和抽象类的特点
  3. 环境配置就是安装软件,修改软件的配置文件,安装软件就是文件的复制,与新增--linux下一切皆文件...
  4. MySQL 定时任务event
  5. $().index() 两种用法
  6. 数据库连接池的深入理解
  7. 用友与中国互联网协会签署战略合作 共推企业互联网转型
  8. HIbernate学习笔记5 之 查询
  9. Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
  10. 在用户控件中动态添加控件及事件