计算机求解10进制转换任意进制

news/2024/11/5 12:10:37/文章来源:https://www.cnblogs.com/riverstream/p/18527457

我们在高中必修三的数学书中,给的算法思想就是除k取余数法,先一直除,直到小于除数为止。

原理证明

n进制转化为10进制可表示为

\[(a_1 a_2 \dots a_m)_{(n)} = \sum _{k=1}^{m} a_{k}n^{m-k} \]

这个时候,通过除以n,那么其他的项均是可以整除的,所以这里只留下最后一项不能被整除,用数学表示这个过程:

\[\frac {\sum _{k=1}^{m} a_{k}n^{m-k}}{n} = \sum _{k=1}^{m-1} a_{k}n^{m-k-1} + a_m/n \]

\(a_m/n\)无法被整除,所以余数即为最后一位,这时候再继续这个过程m次,直到\(\sum _{k=1}^{m} a_{k}n^{m-k}\)这部分为0的时候,我们就已经获得了所有位上的值。结束


下面是给出这个问题的算法代码求解

方法一:除k取余数法(递归)

下面用的是python的递归伪代码

def to_base_n(x: int, base: int):x == 0 -> ""r = x % basex >= base -> to_base_n(x // base, base) + str(r)return str(r)

方法二:除k取余数法(非递归)

这里给出的是python非递归的伪代码

def decimal_to_base(dividend: int, base: int):dividend == 0 -> "0"digits = "0123456789ABCDEF"result = ""while {dividend > 0: dividend // base}:result = digits[dividend % base] + result # 加在字符左边,即反return result

方法三:位运算

这种方法仅使用于特定情况,例如转化为2进制,或者其他2幂次的进制

def decimal_to_binary_bitwise(n):n == 0 -> "0"binary = ""while {n:n>>1}:binary = str(n & 1) + binaryreturn binary

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827098.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHPStudy 安装tp8 php8.1.3 安装XDbug、redis扩展

1.1 下载php安装包 https://windows.php.net/download/1.2 下载的的安装包1.3 解压 解压到D:\phpstudypro\Extensions\php\php8.1.3nts1.4 修改php8.1.3的php.ini文件 将php8.1.3nts目录下的php.ini-development文件复职一份并改文件名为 php.ini 。然后可以将php.ini里面的内容…

pyspark建模(类似于dwd层),flask直接对接前端请求进行召回(类似于ads层,但是不保存)

2. Spark MLib 2.1 Spark MLib 开发环境准备 2.1.1 配置python和spark环境 安装Python环境 安装Anaconda3-5.2.0-Windows-x86_64.exe配置环境变量Anaconda_HOME E:\20241014_Soft\Anaconda3PATH %Anaconda_HOME%Scripts;%Anaconda_HOME%Library\mingw-w64\bin;%Anaconda_HOME…

征程 6E camera diag sample

01 功能概述 本文的 demo sample 主要描述当前 camera 相关外设诊断的当前状态,并提供自定义实现的方法及使用说明。 1.1 软件架构说明 本 sample 基于现已实现的 camera 诊断架构,libcam 内的外设诊断功能对外设硬件状态进行监测,并支持将故障状态发送给 MCU 处理,或通过事…

实时数仓及olap可视化构建(基于mysql,将maxwell改成seatunnel可以快速达成异构数据源实时同步)

1. OLAP可视化实现(需要提前整合版本)Linux121 Linux122 Linux123jupyter✔spark ✔ ✔ ✔python3+SuperSet3.0✔hive✔ClinckHouse✔Kafka ✔ ✔ ✔Phoenix ✔DataX ✔maxwell✔Hadoop ✔ ✔ ✔MySQL✔ZK ✔ ✔ ✔HBASE ✔ ✔ ✔1.1 安装Vmware,安装虚拟机集群 1.1.1 安装 …

AI运动小程序开发常见问题集锦二

截止到现在写博文时,我们的AI运动识别小程序插件已经迭代了23个版本,成功应用于健身、体育、体测、AR互动等场景;为了让正在集成或者计划进行功能扩展优化的用户,少走弯路、投入更少的开发资源,针对近期的咨询问题,我们又归集了一些常见问题,供大家参考。一、计时、计数…

synchronized的monitor监视器

public class T {@SneakyThrowspublic static void main(String[] args) {System.out.println("此行后加锁 monitorenter");synchronized (T.class){System.out.println("hello monitor");}System.out.println("此行前释放锁 monitorexit");}}反…

31 计算机安全

计算机安全是保护系统和数据的,完整,保密,可用 保密:有权限的人才能读取数据;泄露信息就是攻击保密性(看不看得到)---窃取信息 完整性:能够修改数据,知道密码进入操作-----------------------------------获取权限 可用性:有权限的人应该能随时访问,黑客发大量请求到…

大话USB PD快充电源功率“协商”

啥叫USB PD快充技术? USB PD快充技术就是通过USB接口对对USB设备进行快速充电的一项技术。 由于USB技术的发展,特别的USB TYPE-C接口的广泛应用,基于USB TYPE-C接口的USB PD快充技术越来越成为主流。 使用USB TYPE-C接口的技术可以给谁充电?可以给我们的手机充电 可以给笔记…

瑞芯微RK3568开发板Linux编译报错404怎么办触觉智能教你轻松解决

本文介绍瑞芯微RK3568主板/开发板SDK编译流程和编译报错的解决方法,使用触觉智能EVB3568鸿蒙开发板演示,具有丰富的视频输入输出接口(HDMI/eDP/MIPI/LVDS) 与多种高速接口(千兆网口/PCIe/SATA/CAN等)。近期,触觉智能即将发布RK3568系列开源鸿蒙OpenHarmony5.0系统固件,敬…

网络流建图汇总

Dining G 一个点有两重限制,将点放中间,两边分别放两个限制,中间点点拆点连 1 表示限制 CTSC1999 家园 / 星际转移问题 时间限制可以分层图,分层图不需二分,直接一层层建即可 企鹅游行 这种有限制的拆点就完了。 猪 时序问题按照时间建即可。 一般出现调整的可以考虑把调整…

UE中基于FluidFlux插件实现洪水数据接入的一种思路

这是FluidFlux插件文档链接: http://imaginaryblend.com/2021/09/26/fluid-flux/ FluidFlux插件原本可以在编辑器模式下,通过右键SimulationDomain保存模拟状态,这个模拟状态保存后是一个资产文件以及三张纹理图Ground,Height,Velocity。SimulationDomain中有一个俯视的场景…

3 有限体积法:推导方程

3 有限体积法:推导方程 基本原理和目标 (注意:这一节看不懂没关系,在后面的推导中会慢慢用到)质量、动量和能量的守恒流体的质量守恒 动量改变的速度 = 一个流体粒子上受到的力的总和(牛顿第二定律) 能量改变的速度 = 一个流体粒子吸收的热量,和作用在其上的功的总和(…