用贪心算法计算十进制数转二进制数(整数部分)

十进制整数转二进制数用什么方法?网上一搜,大部分答案都是用短除法,也就是除2反向取余法。这种方法是最基本最常用的,但是计算步骤多,还容易出错,那么还有没有其他更好的方法吗?

一、短除反向取余法

具体的步骤是不断将十进制数除以2,每次记录余数,直至商为0,然后把所有余数从下向上(反向)的顺序排列,即得到二进制数。

例如,把十进制数69转换为二进制数,结果为1000101,计算过程如图1所示。

图1 短除反向取余法

通过观察图1,可以看出:

69=1\times 2^{6}+0\times 2^{5}+0\times 2^{4}+0\times 2^{3}+1\times 2^{2}+0\times 2^{1}+1\times 2^{0}             (1)

一般表达式为:

a=\sum_{i=0}^{i=n}\left ( c_{i}\ast 2^{i} \right )c_{i}\in \left \{ 0,1 \right \}                                                (2)

十进制数转化为二进制数的结果就是把系数c_{i}i=ni=0(从最高位到最低位)的排列

如果把(1)式中的系数c_{_i}=0的项去掉,那么有

69=2^{6}+2^{2}+2^{0}                                                            (3)

也就是把十进制数转换为二进制的过程,实际上就是把十进制数转换为若干个以2为底的幂运算之和,那么一般表达式为:

a=\sum_{i=0}^{i=m}2^{n_{i}}                                                               (4)

在(3)式中,n_{0}=6n_{1}=2n_{2}=0

也就是在十进制的69转换为二进制后,数位序号为0,2,6的项系数为1,其他项系数都为0(数位序号从右向左依次增1,最低位序号为0),如表1所示,表格中橙色项系数为1,白色项系数为0。

表1 十进制数69的二进制转换结果

二进制数

1

0

0

0

1

0

1

位序号

6

5

4

3

2

1

0

位权重

64

32

16

8

4

21

二、贪心算法

那么如何快速求n_{i}呢?本人经过研究发现,利用贪心算法的思维,可以很好的解决这个问题。

1、贪心算法简介

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。

2、操作步骤

假设十进制数为a,根据公式(4),用贪心算法思维进行十进制转二进制计算的步骤为:

(1)先找出a中最大的那一项2^{n_{i}},并记录{n_{i}}

(2)把最大项的值从a中减掉:a=a-2^{n_{i}}

(3)跳转到步骤(1)循环计算,直到a=0,计算结束。

例如,十进制数a=69,计算过程为:

(1)找出69中最大的项为64,也就是2^{6},记录n_{0}=6

(2)a=69-64=5

(3)找出5中最大的项为4,也就是2^{2},记录n_{1}=2

(4)a=5-4=1

(5)找出1中最大的项为1,也就是2^{0},记录n_{2}=0

(6)a=1-1=0,计算结束;

计算的结果为:69=2^{6}+2^{2}+2^{0}=64+4+1

二进制数位序号0,2,6的项为1,其他位序号的项为0,得到结果为1000101。

对比短除法和贪心法,可以发现,贪心算法计算步骤少,准确率也较高,不容易算错,但是需要我们事先记住一些常用的2^{n}的值,这样才有助于我们更快找出最大项。表2为0\leqslant n\leqslant 102^{n}的值。

表2 常用2为底幂的值

2^{n}2^{0}2^{1}2^{2}2^{3}2^{4}2^{5}2^{6}2^{7}2^{8}2^{9}2^{10}
12481632641282565121024

(本文结束)

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

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

相关文章

关于WIN环境下pip DeepSpeed安装报错问题

问题描述 安装resemble-enhance项目时遇到的问题: >>> ERROR 1error: subprocess-exited-with-errorpython setup.py egg_info did not run successfully.exit code: 1[15 lines of output]test.cLINK : fatal error LNK1181: cannot open input file aio.libTraceb…

一维时间序列信号的基于小波集的时频超分辨率分析方法(Python)

由于小波变换只能反映信号的零维奇异性,即只能表达奇异点的位置和特性。事实上具有线奇异的函数在高维空间中非常普遍,例如,自然物体光滑边界使得自然图像的不连续性往往体现为光滑曲线上的奇异性,而并不仅仅是点奇异。对于一个二…

人工智能专业现代学徒制人才培养质量评价体系构建

一、 引 言 随着信息时代的发展,人工智能(AI)技术的飞跃进步对各行各业产生了深远影响,对专业人才的培养提出了更高要求。现代学徒制作为一种创新人才培养模式,通过校企合作,强调理论与实践的深度结合&…

性能测试学习-基本使用-元件组件介绍(二)

jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件 缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位) 工具用户量分析报表IP欺骗费用体积扩展性Loadrunner多(万)精…

Lumière:开创性的视频生成模型及其应用

视频内容创造领域迎来了突破性进展,但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素,模型必须确保视频中的运动在时间上是连贯和平滑的,避免出现不自然的跳…

LVS精益价值管理系统 LVS.Web.ashx SQL注入漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制,帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述 LVS精益…

记录岁月云明细账excel导出的性能优化

财务软件报表还是非常麻烦,因为使用excel最好的就是财务,但是通过java导出excel,使用easyexcel不用报表工具,不是这么容易。采用jprofile对一个导出操作进行监控,其中一家零售企业导出当月全部明细账,检测到…

鬼刀画风扁平化粒子炫动引导页美化版

源码介绍 分享一款引导页,响应式布局,支持移动PC 添加背景图片,美化高斯模糊 ,删除蒙版人物部分,更图片人物画风更美好 删除雪花特效 替换字体颜色 添加底备案号 预留友情连接 效果预览 源码下载 https://www.qqmu.com/3381.h…

‘yarn’不是内部或外部命令,也不是可运行的程序或批处理文件。

目录 问题点 解决方式 # 安装 # 版本 # 本地发生变化(了解) # 安装项目依赖 新问题 解决方式 问题点 在vscode中,点击dev运行,项目报错【Q1】 * 正在执行任务: yarn run dev yarn : 无法将“yarn”项识别为 cmdlet、函数…

AI生成PPT:一键式演示文稿制作的秘诀

工欲善其事,必先利其器。 随着AI技术与各个行业或细分场景的深度融合,日常工作可使用的AI工具呈现出井喷式发展的趋势,AI工具的类别也从最初的AI文本生成、AI绘画工具,逐渐扩展到AI思维导图工具、AI流程图工具、AI生成PPT工具、AI…

OrangePi Kunpeng Pro套装测评:开箱与基本功能测试

前言 大家好,我是起个网名真难。非常荣幸受到香橙派的邀请,同时也是第一次做这个事情,很荣幸对香橙派与华为鲲鹏在2024年5月12日联合发布的新品——香橙派Kunpeng Pro开发板进行深入的评测。这款开发板是香橙派与华为鲲鹏合作推出的高性能平…

中信建投证券信息技术部PMO高级经理张子洋受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 中信建投证券股份有限公司信息技术部PMO高级经理张子洋先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“浅谈项目管理标准化的建设及实践分享”。大会将于6月29-30日在北京举办,敬请关注! 议题…

C# 校验Json格式

错误json:错误值 -2146.379 [{"Key": "surface_heights_average","Value": "-2122.739nm","Description": "surface_heights_average"}, {"Key": "surface_heights_max","V…

第九篇 有限状态机

实验九 有限状态机 9.1 实验目的 学习有限状态机的组成与类型; 掌握有限状态机的设计方式; 学习有限状态机的编码方式; 掌握使用有限状态机进行设计的方法。 9.2 原理介绍 9.2.1 有限状态机的基本概念 有限状态机(Finite …

linux(centos7)开机自启jar文件

问题 之前参考网上说的直接在/etc/rc.local文件中增加sh文件启动语句,但是没有效果: /root/dashboard/dashboard_backend/start_dashboard.sh 权限也增加了,还是不行: chmod x /etc/rc.local 排查 排查了一下: 查…

5分钟带你了解海外仓备货系统:它能做的,可不止备货这么简单

现在跨境电商的发展速度确实还是非常快的,线上购物也越来越变成更多人的主流购物模式。这种情况下,对外贸行业来说是好事,不过对跨境电商的服务环节——海外仓,带来的压力可不小。 首先来说,现在各个电商平台对商家发…

B站内核隔离技术的应用与实践之大数据混部篇

背景 随着B站大数据业务的高速发展,各类业务资源需求也随之快速增长。与此同时,大数据集群有效的资源利用率低于预期,究其原因主要有以下两点, 业务出于性能、稳定性考量会向平台申请过量的系统资源,导致平台不会调度更…

别慌!不知道如何处理#开头的字符串时,需要先了解一下什么是NCR

最近进行接口测试时抓包发现请求响应中有类似下面这些字符 起初试图对这些编码尝试各种decoder操作来一探其真身,遗憾的是均已失败告终(后来发现,这些编码可以在浏览器中正常显示)。最后得知这种奇怪的编码格式并不是编码,而是一种…

红酒:红酒保存的理想温度与湿度

对于云仓酒庄雷盛红酒,保存方法尤为重要。而保存红酒的关键在于控制温度与湿度这两个因素。以下是关于红酒保存的理想温度与湿度的详细解释。 首先,谈到雷盛红酒的保存温度,关键的是要避免不好温度。高温会加速化学反应,使红酒更快…

【二叉树】Leetcode 530. 二叉搜索树的最小绝对差【简单】

二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] 输出:1 解题思路 中序遍…