二进制在数学中的妙用

2023-11-19

二进制在数学中的妙用

goal00001111搜集整理

 

十 八世纪初,莱布尼茨发明了二进制数,当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用。二进制数以其工作可靠,运算简单,逻辑严密,容易实现 等特点,成为了计算机的专用语言。在计算机科学和大量应用数学领域中,二进制记数法是必不可少的。在趣味数学方面,同样也有广泛的应用。

让我们先来看一个经典的数学趣题:

一工人工作7天,老板有一段黄金,每天要给工人1/7的黄金作为工资,老板只能切这段黄金2刀,请问怎样切才能每天都给工人1/7的黄金?

       这题不简单吧?小心别把脑子都想破了。

在给出答案之前,先让我们看另一个简单的例子:

用天平称1~ 63 整数克重的物品,至少要配备几只多重的砝码(砝码只能放在天平的一端)?

没有学过二进制的人是很难想到答案的,可是如果你知道二进制数,那就不难了。我们知道二进制中只有01两个数字,它的各位数字的权值从小到大依次为2^02^12^22^3,。。。。我们用一个数的每位数字乘以其权值所得到的乘积之和来表示这个数。对于一个具有8位的二进制数来说,它可以表示的数据范围是0~2^8

63 = 2^6 – 1 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5

所以,我们只需配备2^0 =12^1 = 22^2 = 42^3 = 82^4 = 162^5 = 32五种不同克数的砝码各一个。

类似的题目还有如何装苹果:

现有一笔出售苹果的生意,已知客人可能需要的苹果数量肯定是1个到1000个之间,但不知道具体数字。客人要求必须全部用他提供的箱子装整箱(每个箱子都最多可以装1000个苹果),箱子一旦装成就无法再拆开重装。

你手中有1000个苹果,10个箱子,客人需要的苹果数量未知,问怎么装才能满足客人的需要?

解题的原理和上题是一样的,都是利用二进制数的记数原理。因为1000 < 2^10 = 1024,所以只要使用2^02^12^22^32^42^52^62^72^82^9十个数,就可以表示11023之间的所有数。

例如:30 = 2^1 + 2^2 + 2^3 + 2^475 = 2^0 + 2^1 + 2^3 + 2^6等。

但是现在苹果的总数不是1023个,而是1000个,所以第10个箱子装的苹果数不是512个,而是489个。

1000 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 489

所以这10个箱子中每个箱子依次装1248163264128256489个苹果,就可以满足整箱提供给客人任意数量苹果的要求。

现在明白第一个题目的解法了吧?对!就是二进制。

因为7 < 2^3 = 8,所以只要使用2^02^12^2三个数,就可以表示17之间的所有数。那么我们只要把金条分成三份,比例为1:2:4,也就是第一刀切下金条的七分之一(设为A),第二刀切下金条的七分之二(设为B),剩下的部分刚好为金条的七分之四(设为C)。我们只要按照如下的方法发放工资,就解决问题了:

第一天    给长工A 1 = 2^0

第二天    给长工B,并把A拿回来;(2 = 2^1

第三天    给长工A;(3 = 2^0 + 2^1

第四天    给长工C,并把AB拿回来;(4 = 2^2

第五天    给长工A;(5 = 2^0 + 2^2

第六天   

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二进制在数学中的妙用 的相关文章

  • 如何拦截 .Net 中第三方库对非虚拟方法的调用?

    我认为我需要的是 net 人们称之为 透明动态代理 的东西 但到目前为止我所看到的所有实现 Castle DynamicProxy Spring NET AOP 等 都要求我至少执行以下操作之一 将拦截的方法声明为虚拟方法 包装类并创建包装
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 类型转换 sockaddr 结构

    我正在尝试学习网络编程 并在这个过程中学习C 我对结构感到困惑sockaddr这是一个通用地址 并且sockaddr in 我的书里是这么说的 因此 我们可以填写 sockaddr in 的字段 然后强制转换 a 指向 它指向 指向 soc
  • WPF MVVM将DataTable绑定到DataGrid不显示数据

    我有一个简单的控件 其中包含一个 DataGrid 其中 ItemsSource 绑定到 DataTable 当我填充 DataTable 时 我可以看到 DataGrid 中添加了行 但没有显示任何数据 我没有为此 DataGrid 使用
  • 无法更新 .mdf 数据库,因为该数据库是只读的(Windows 应用程序)

    我使用 C 创建了一个数据库 Windows 应用程序 我的应用程序在 Windows XP 上成功运行 但在 Vista 或 Windows 7 系统上无法正确执行 我的应用程序显示类似以下内容的消息 无法更新 mdf 数据库 因为该数据
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

    我有一个表单 我想在发生某些用户操作时将焦点设置到文本框 我知道 MVVM 的处理方式是绑定到 VM 属性 但是 TextBox 没有允许这种情况发生的属性 从虚拟机设置焦点的最佳方法是什么 我创建了一个 IResult 实现 可以很好地实
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 选择要重写哪个基类的方法

    鉴于以下情况 class Observer public virtual void Observe Parameter p 0 template
  • gcc 中的“假设”子句

    gcc 最新版本 4 8 4 9 是否有类似于以下的 假设 子句 assume 内置icc支持吗 例如 assume n 8 0 从 gcc 4 8 2 开始 gcc 中没有 assume 的等效项 我不知道为什么 这会非常有用 马夫索建议
  • 修改公共属性的访问修饰符是否是重大更改?

    如果我将公共属性的 setter 的访问修饰符从私有更改为公共 是否会导致引用它的其他程序集发生任何重大更改 UPDATE 这个问题是我 2012 年 1 月博客的主题 https ericlippert com 2012 01 09 ev
  • 如何从标准输入读取一行,阻塞直到找到换行符?

    我试图从命令行的标准输入一次读取任意长度的一行 我不确定是否能够包含 GNU readline 并且更喜欢使用库函数 我读过的文档表明getline应该可以工作 但在我的实验中它不会阻塞 我的示例程序 include
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 使用 LINQ to SQL 的 .NET 架构的最佳设计实践(DAL 必要吗?我们真的可以使用 POCO吗?要采用的设计模式吗?)

    我避免在 net arch n 层架构上编写看起来像是另一个线程的内容 但请耐心等待 希望我和其他人一样 在选择用于企业应用程序的架构时 考虑到当今的趋势和新兴技术 仍然没有 100 满意或不清楚应采取的最佳方法 我想我正在寻求大众社区对方
  • jquery ajax“发布”调用

    我是 jQuery 和 Ajax 的新手 并且在 发布 方面遇到问题 我正在使用 jQuery Ajax post 调用将数据保存到数据库 当我尝试保存数据时 它将 null 传递给我的 C 方法 jQuery 看起来像这样 functio
  • 为什么C#不支持多重继承? [复制]

    这个问题在这里已经有答案了 可能的重复 C 应该包含多重继承吗 https stackoverflow com questions 191691 should c include multiple inheritance 为什么C 不支持多
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行
  • 你将如何开始自动化我的工作? - 第2部分

    后续这个问题 https stackoverflow com questions 2796128 how would you start automating my job 在经历了第一波进货 9 小时的复制 粘贴 后 我现在相信我已经满足

随机推荐

  • RuntimeError: FlashAttention is only supported on CUDA 11 and above

    RuntimeError FlashAttention is only supported on CUDA 11 and above 问题描述 解决方案 问题描述 RuntimeError FlashAttention is only su
  • torch.cuda.is_available()

    可能问题1 cuda 与 torch 版本不对应 可能问题2 安装的torch是cpu版本 或者无cuda版本 可能问题3 torch的关联包未安装 解决方案 使用conda重新安装 conda install pytorch torchv
  • Fisco Bcos 答疑

    问 测试8的结果 集群中有4个节点 其中宕机3个 发起一笔交易 交易失败 然后启动宕机的3个节点 还是交易失败 但如果有一笔新的交易执行 会激活上一笔交易 交易失败的那一笔 最后失败的那一笔会交易成功 这种情况下的交易原理是怎样的 答 不存
  • 图的遍历(深度优先遍历,DFS)

    1 概念 图的遍历操作是从图中某一顶点出发 对图中所有顶点访问一次且仅访问一次 1 在图中 遍历的起始顶点是编号最小的顶点 2 某个起点到达不了所有顶点 则多次调用访问所有顶点 3 为避免遍历因回路而陷入死循环 附设置访问标志数组visit
  • SharedPreferences自定义XML文件保存位置

    声明 本篇文章的相关技术来自于 反射机制修改SharedPreferences存储路径 作者 Harlan9001 基于 实用的SharedPreferences工具类 前言 因为之前的文件是保存在项目目录下的 所以只要软件卸载了 本地的X
  • JAVA 中String 转JSONObject并取值

    今日在做Springboot时把请求放在后端进行 请求返回的结果的字符串需转化为JSON格式才能在后端进行交互 转换时遇到没有的问题 找寻后发现应该导入相关依赖包才能使用JSONObject import net sf json JSONO
  • Android_推送技术研究

    前言 最近研究Android推送的实现 研究了两天一夜 有了一点收获 写下来既为了分享 也为了吐槽 需要说明的是有些东西偏底层硬件和通信行业 我对这些一窍不通 只能说说自己的理解 为什么要研究Android推送技术 主要还是毕业设计要做一个
  • docker的数据卷、docker数据持久化

    目录 前言 docker数据持久化的2种方式 数据卷 bind mount 即 v参数 匿名数据卷 docker manager volume v参数和匿名卷的区别 docker volume 命令的使用 数据卷容器 孤儿volume mo
  • Linux操作系统Fedora命令界面与图形界面间切换

    Linux操作系统Fedora命令界面与图形界面间切换 听语音 浏览 5986 更新 2014 12 11 15 43 标签 linux 1 2 3 4 5 6 7 分步阅读
  • AI在玩一种很新的艺术,700万网友在线围观,ControlNet又立功了

    图片来源 由无界AI生成 文章来源 公众号量子位 QbitAI AI又在玩一种很新的艺术 一组 在离谱与合理的边缘反复试探 的图席卷各大平台 最火的一条 已有近700万查看16 8万点赞 到处有人在求教程 除了棋盘样式 还有一种螺旋样式的也
  • 定时器&pwm

    定时器TIM STM32F1 系列中 除了互联型的产品 共有 8 个定时器 分为基本定时器 通用定时器和高级定时器 基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器 只能定时 没有外部 IO 通用定时器 TIM2
  • 腾讯mini项目-【指标监控服务重构】2023-07-30

    今日已办 调研 CPU Memory Cadivisor adivisor gt Prometheus gt Grafana SigNoz Web google cadvisor Analyzes resource usage and pe
  • Java字符串转换成字符数组

    方法1 package com oracle import java util Scanner public class Test param args public static void main String args TODO Au
  • VMWARE 占用硬盘空间越来越大的解决方法

    1 问题现象 为了开发android驱动 我使用vmware虚拟机运行UBUNTU12 04 硬盘分区有150G 分配了130g给虚拟机 还剩下不到20G的空间作为预留 本来想着130G的空间应该足够跑ubuntu的 但当我编译过几次and
  • 3D游戏编程——与游戏世界交互

    HW5 1 编写一个简单的鼠标打飞碟 Hit UFO 游戏 游戏内容要求 游戏有 n 个 round 每个 round 都包括10 次 trial 每个 trial 的飞碟的色彩 大小 发射位置 速度 角度 同时出现的个数都可能不同 它们由
  • 【LLM】如何将开源基础模型训练成特定领域的LLM?

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • xxxxxxxxxxxxxx

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
  • python生成10个随机数并排序_生成一个随机数的列表,然后对它们进行排序

    首先 我想向您展示完整的代码 稍后我将发表评论 import random def randomNum return random sample range 1 100 5 numbers list randomNum print numb
  • BUUCTF LOVESQL

    打开网页后 利用hackbar 先来查询他的列数 1 order by 3 试了1 2 3 4都不行 初步判断 是被后端代码过滤掉了 我们试试 和 的效果是一样的 但是当我尝试使用 后发现仍然没有反应 说明后端代码也过滤掉了 我们采用另外一
  • 二进制在数学中的妙用

    二进制在数学中的妙用 goal00001111搜集整理 十 八世纪初 莱布尼茨发明了二进制数 当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用 二进制数以其工作可靠 运算简单 逻辑严密 容易实现 等特点 成为了计算机的专用语言 在