3.5-进制转换

  对于一个P进制的数,如果要转换为Q进制的数,需要分为两步:

  ①将P进制数x转换为十进制数y

   对于一个十进制数y=d1d2···dn,可以将其写为:

y = d1 * 10n-1 + d2 * 10n-2 + ··· + dn-1 * 10 + dn

   对于P进制数x,如果其形式为a1a2···an,则可以将其写为:

x = a1 * Pn-1 + a2 * Pn-2 + ··· + an-1 * P + an

   在该形式下,可以有如下代码将P进制数x转为十进制数y:

 int y=,product=;//product 在循环中会不断乘p,得到1、P、P^2、P^3····
while(x!=){
y=y+(x%)* product;//x%10是为了每次获取x的个位数
x=x/;//去掉x的个位
product=product*P;
}

  ②将十进制数y转换为Q进制数z

   采用“除基取余法”。“基”就是指将要转换成的进制Q的数值,所以“除基取余法”就是 每次将待转换的十进制数除以Q,然后将得到的余数作为低位存储,所得的商继续除以Q并进行上面的操作,最后当商为0时,将所有的余数从高到低进行输出就可以得到z。

   举例:将十进制数11转换为二进制数

   11除以2,得商为5,余数为1;
 5除以2,得商为2,余数为1;2除以2,得商为1,余数为0;
 1除以2,得商为0,余数为1,算法终止。
 将余数从后往前输出,得1011即为11的二进制数。

   转换代码:

 int z[],num=;//数组z存放Q进制数y的每一位,num为位数
do{
z[num++]=y%Q;//除基取余
y=y/Q;
}while(y!=);//当商不为0时进行循环
//数组从高z[num-1]到低z[0]输出即为Q进制z,进制转换完成。
//使用do···while语句而不是while语句:如果当十进制数y等于0,
//那么使用while语句的代码将使循环直接跳出,导致出错(正确的
//结果应当是数组z中存放了z[0]=0)

参考书籍-《算法笔记》-胡凡

PAT-进制转换的更多相关文章

  1. PAT/进制转换习题集

    B1022. D进制的A+B (20) Description: 输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数. Input: ...

  2. PAT甲级 进制转换题_C++题解

    进制转换题 PAT (Advanced Level) Practice 进制转换题 目录 <算法笔记> 重点摘要 1015 Reversible Primes (20) 1019 Gene ...

  3. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  4. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

  6. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  7. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  8. JS 进制转换

    十进制转换成其他进制 objectname.toString([radix])   objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...

  9. php的进制转换

    学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...

  10. C++ 中数串互转、进制转换的类

    /******************************************************************** created: 2014/03/16 22:56 file ...

随机推荐

  1. RDD(九)——序列化问题

    在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要考虑的主要问题是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化 ...

  2. FPGA 状态机-序列检测器verilog

    实现功能:检测出串行输入数据4位Data二进制序列0101,当检测到该序列的时候,out=1,否则out=0 (1)给出状态编码,画出状态图 (2)门电路实现 (3)verilog实现 首先规定Q3Q ...

  3. tap点击一次,内部程序执行两次,多次

    调试过程发现,使用 $(document).on('tap', '.children2', function () { //内部程序 }) 点击children2的时候,程序在里面执行了两次.百度得到 ...

  4. vim模式及基础命令

    VIM基本介绍vi和在修改vim命令是linux中强大的文本编辑器,由于linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数vim其实是vi的升级版yum install -y vim ...

  5. java replaceall 用法:处理特殊字符

    public class TryDotRegEx { public static void main(String[] args) { // TODO Auto-generated method st ...

  6. IO概念和五种IO模型

    一.什么是IO? 我们都知道unix世界里.一切皆文件.而文件是什么呢?文件就是一串二进制流而已.不管socket.还是FIFO.管道.终端.对我们来说.一切都是文件.一切都是流.在信息交换的过程中. ...

  7. 关联规则之Aprior算法

    关联规则挖掘在电商.零售.大气物理.生物医学已经有了广泛的应用,本篇文章将介绍一些基本知识和Aprori算法. 啤酒与尿布的故事已经成为了关联规则挖掘的经典案例,还有人专门出了一本书<啤酒与尿布 ...

  8. 疯狂收集个人信息的谷歌,为何不像Facebook那样让人毛骨悚然?

    自从Facebook信息泄露丑闻事件发生后,互联网上的个人隐私及安全成为大众的"心病".而大众最讨厌的,是互联网企业收集自己的信息,因此都在积极讨伐这种行为.但他们却忘了,收集用户 ...

  9. text-align和vertical-align

    1.text-align(水平对齐)text-align样式使元素在其定界区域内水平对齐,其取值可以是left.right.center或justify.justify使元素两端对齐.2.vertic ...

  10. HDU-2544-最短路(各种最短路径算法)

    迪杰斯特拉算法--O(n^2) #include"iostream" #include"cstring" #include"cstdio" ...