离散数学问题集--问题5.9

问题 5.9 综合了计算机组成原理、数字逻辑和离散数学中的关键概念,旨在帮助学生理解二进制算术运算的硬件实现、逻辑门与算术运算的关系,以及如何使用数学方法来验证数字系统的正确性。它强调了从规范到实现再到验证的完整过程。

问题5.9的思路

思想

  • 函数抽象: num ⁡ ( α n ) \operatorname{num}(\alpha_{n}) num(αn):将二进制字符串映射到非负整数
  • 递归: num ⁡ ( α n + 1 ) = a n + 1 2 n + 1 + num ⁡ ( α n ) \operatorname{num}(\alpha_{n + 1})=a_{n + 1}2^{n + 1}+\operatorname{num}(\alpha_{n}) num(αn+1)=an+12n+1+num(αn)
  • 用求和位和进位来表示两个二进制数的加法:

思路

  • 加法器的抽象规范–>加法器的电路实现–>数学方法验证实现是否符合规范

拓展问题

  1. 问题5.9都考察了哪些知识点?讲到了哪些重要的结论?
  2. 如何将问题5.9的结论推广到十进制?

Problem 5.9

For any binary string α \alpha α, let num ⁡ ( α ) \operatorname{num}(\alpha) num(α) be the nonnegative integer it represents in binary notation (possibly with leading zeroes). For example, num ⁡ ( 10 ) = 2 \operatorname{num}(10)=2 num(10)=2, and num ⁡ ( 0101 ) = 5 \operatorname{num}(0101)=5 num(0101)=5.

An n + 1 n + 1 n+1-bit adder adds two n + 1 n + 1 n+1-bit binary numbers. More precisely, an n + 1 n + 1 n+1-bit adder takes two length n + 1 n + 1 n+1 binary strings
α n : : = a n . . . a 1 a 0 , β n : : = b n . . . b 1 b 0 , \begin{align*} \alpha_{n}&::=a_{n}...a_{1}a_{0},\\ \beta_{n}&::=b_{n}...b_{1}b_{0}, \end{align*} αnβn::=an...a1a0,::=bn...b1b0,
and a binary digit C 0 C_{0} C0 as inputs, and produces a length- ( n + 1 ) (n + 1) (n+1) binary string
σ n : : = s n . . . s 1 s 0 , \sigma_{n}::=s_{n}...s_{1}s_{0}, σn::=sn...s1s0,
and a binary digit c n + 1 c_{n + 1} cn+1 as outputs, and satisfies the specification:
num ⁡ ( α n ) + num ⁡ ( β n ) + c 0 = 2 n + 1 c n + 1 + num ⁡ ( σ n ) . (5.9) \operatorname{num}(\alpha_{n})+\operatorname{num}(\beta_{n})+c_{0}=2^{n + 1}c_{n + 1}+\operatorname{num}(\sigma_{n}). \tag{5.9} num(αn)+num(βn)+c0=2n+1cn+1+num(σn).(5.9)
There is a straightforward way to implement an n + 1 n + 1 n+1-bit adder as a digital circuit: an n + 1 n + 1 n+1-bit ripple-carry circuit has 1 + 2 ( n + 1 ) 1 + 2(n + 1) 1+2(n+1) binary inputs
a n , . . . , a 1 , a 0 , b n , . . . , b 1 , b 0 , c 0 , a_{n},...,a_{1},a_{0},b_{n},...,b_{1},b_{0},c_{0}, an,...,a1,a0,bn,...,b1,b0,c0,
and n + 2 n + 2 n+2 binary outputs,
c n + 1 , s n , . . . , s 1 , s 0 . c_{n + 1},s_{n},...,s_{1},s_{0}. cn+1,sn,...,s1,s0.
As in Problem 3.6, the ripple-carry circuit is specified by the following formulas:
s i : : = a i ⊕ b i ⊕ c i c i + 1 : : = ( a i ∧ b i ) ∨ ( a i ∧ c i ) ∨ ( b i ∧ c i ) \begin{align*} s_{i}&::=a_{i}\oplus b_{i}\oplus c_{i} \tag{5.10}\\ c_{i + 1}&::=(a_{i} \land b_{i}) \lor (a_{i} \land c_{i}) \lor (b_{i} \land c_{i}) \tag{5.11} \end{align*} sici+1::=aibici::=(aibi)(aici)(bici)(5.10)(5.11)
for 0 ≤ i ≤ n 0\leq i\leq n 0in, where we follow the convention that 1 1 1 corresponds to T and 0 0 0 corresponds to F.

(a) Verify that definitions (5.10) and (5.11) imply that
a n + b n + c n = 2 c n + 1 + s n . (5.12) a_{n}+b_{n}+c_{n}=2c_{n + 1}+s_{n}. \tag{5.12} an+bn+cn=2cn+1+sn.(5.12)
for all n ∈ N n \in \mathbb{N} nN.

证明:对任意的 n ∈ N n\in\mathbb{N} nN

  • 左边 = a n + b n + c n \text{左边}=a_n+b_n+c_n 左边=an+bn+cn
  • 可用 1 1 1 位的行波进位加法器来实现。它的输入为 a n a_n an b n b_n bn c n c_n cn,输出为 c n + 1 c_{n+1} cn+1 s n s_n sn
  • 根据 (5.10) 和 (5.11) 有, s n = a n ⊕ b n ⊕ c n s_{n}=a_{n}\oplus b_{n}\oplus c_{n} sn=anbncn c n + 1 = ( a n ∧ b n ) ∨ ( b n ∧ c n ) ∨ ( c n ∧ a n ) c_{n+1}=(a_{n}\land b_{n})\lor(b_{n}\land c_{n})\lor(c_{n}\land a_{n}) cn+1=(anbn)(bncn)(cnan)
  • 右边 = 2 c n + 1 + s n = 2 [ ( a n ∧ b n ) ∨ ( b n ∧ c n ) ∨ ( c n ∧ a n ) ] + a n ⊕ b n ⊕ c n \text{右边}=2c_{n+1}+s_n=2[(a_{n}\land b_{n})\lor(b_{n}\land c_{n})\lor(c_{n}\land a_{n})]+a_{n}\oplus b_{n}\oplus c_{n} 右边=2cn+1+sn=2[(anbn)(bncn)(cnan)]+anbncn

下面使用真值表来验证。

a n a_{n} an b n b_{n} bn c n c_{n} cn a n + b n + c n a_{n} + b_{n} + c_{n} an+bn+cn s n = a n ⊕ b n ⊕ c n s_{n}=a_{n}\oplus b_{n}\oplus c_{n} sn=anbncn a n ∧ b n a_{n}\land b_{n} anbn b n ∧ c n b_{n}\land c_{n} bncn c n ∧ a n c_{n}\land a_{n} cnan c n + 1 = ( a n ∧ b n ) ∨ ( b n ∧ c n ) ∨ ( c n ∧ a n ) c_{n+1} = (a_{n} \land b_{n}) \lor (b_{n}\land c_{n})\lor (c_{n}\land a_{n}) cn+1=(anbn)(bncn)(cnan) 2 c n + 1 + s n 2c_{n+1} + s_{n} 2cn+1+sn
0000000000
1001100001
0101100001
0011100001
1102010012
1012000112
0112001012
1113111113

(b) Prove by induction on n n n that an n + 1 n + 1 n+1-bit ripple-carry circuit really is an n + 1 n + 1 n+1-bit adder, that is, its outputs satisfy (5.9).

Hint: You may assume that, by definition of binary representation of integers,
num ⁡ ( α n + 1 ) = a n + 1 2 n + 1 + num ⁡ ( α n ) . (5.13) \operatorname{num}(\alpha_{n + 1})=a_{n + 1}2^{n + 1}+\operatorname{num}(\alpha_{n}). \tag{5.13} num(αn+1)=an+12n+1+num(αn).(5.13)

证明:使用强归纳法。

归纳假设 P ( n ) P(n) P(n) 为公式 (5.9)。

基础情形: n = 0 n=0 n=0

  • 左边 = num ⁡ ( α 0 ) + num ⁡ ( β 0 ) + c 0 \text{左边}=\operatorname{num}(\alpha_{0})+\operatorname{num}(\beta_{0})+c_{0} 左边=num(α0)+num(β0)+c0
  • 右边 = 2 c 1 + num ⁡ ( σ 0 ) \text{右边}=2c_1+\operatorname{num}(\sigma_{0}) 右边=2c1+num(σ0)
  • 根据 n + 1 n+1 n+1位加法器的规范可知: α 0 = a 0 \alpha_0=a_0 α0=a0 β 0 = b 0 \beta_0=b_0 β0=b0 σ 0 = s 0 \sigma_0=s_0 σ0=s0。因为只有 1 1 1 位,所以 num ⁡ ( α 0 ) = a 0 \operatorname{num}(\alpha_{0})=a_0 num(α0)=a0 num ⁡ ( β 0 ) = b 0 \operatorname{num}(\beta_{0})=b_0 num(β0)=b0 num ⁡ ( σ 0 ) = s 0 \operatorname{num}(\sigma_{0})=s_0 num(σ0)=s0
  • 左边 = num ⁡ ( α 0 ) + num ⁡ ( β 0 ) + c 0 = a 0 + b 0 + c 0 \text{左边}=\operatorname{num}(\alpha_{0})+\operatorname{num}(\beta_{0})+c_{0}=a_0+b_0+c_0 左边=num(α0)+num(β0)+c0=a0+b0+c0
  • 右边 = 2 c 1 + num ⁡ ( σ 0 ) = 2 c 1 + s 0 \text{右边}=2c_1+\operatorname{num}(\sigma_{0})=2c_1+s_0 右边=2c1+num(σ0)=2c1+s0
  • 根据公式(5.12)可知, 左边 = 右边 \text{左边}=\text{右边} 左边=右边

归纳步骤:

  • 假设 P ( k ) P(k) P(k) 对所有 k ≤ n k\leq n kn 都成立。
  • k = n + 1 k=n+1 k=n+1 时, 左边 = num ⁡ ( α n + 1 ) + num ⁡ ( β n + 1 ) + c 0 \text{左边}=\operatorname{num}(\alpha_{n+1})+\operatorname{num}(\beta_{n+1})+c_{0} 左边=num(αn+1)+num(βn+1)+c0
  • 根据公式(5.13)有:
    左边 = a n + 1 2 n + 1 + num ⁡ ( α n ) + b n + 1 2 n + 1 + num ⁡ ( β n ) + c 0 = ( a n + 1 2 n + 1 + b n + 1 2 n + 1 ) + ( num ⁡ ( α n ) + num ⁡ ( β n ) + c 0 ) = 2 n + 1 ( 2 c n + 2 + s n + 1 − c n + 1 ) + ( 2 n + 1 c n + 1 + num ⁡ ( σ n ) ) = 2 n + 2 c n + 2 + 2 n + 1 s n + 1 − 2 n + 1 c n + 1 + 2 n + 1 c n + 1 + s n = 2 n + 2 c n + 2 + ( 2 n + 1 s n + 1 + num ⁡ ( σ n ) ) = 2 n + 2 c n + 2 + num ⁡ ( σ n + 1 ) = 右边 . \begin{align*} \text{左边}&=a_{n+1}2^{n+1}+\operatorname{num}(\alpha_{n})+b_{n+1}2^{n+1}+\operatorname{num}(\beta_{n})+c_0\\ &=(a_{n+1}2^{n+1}+b_{n+1}2^{n+1})+(\operatorname{num}(\alpha_{n})+\operatorname{num}(\beta_{n})+c_0)\\ &=2^{n+1}(2c_{n+2}+s_{n+1}-c_{n+1})+(2^{n+1}c_{n+1}+\operatorname{num}(\sigma_{n}))\\ &=2^{n+2}c_{n+2}+2^{n+1}s_{n+1}-2^{n+1}c_{n+1}+2^{n+1}c_{n+1}+s_n\\ &=2^{n+2}c_{n+2}+(2^{n+1}s_{n+1}+\operatorname{num}(\sigma_{n}))\\ &=2^{n+2}c_{n+2}+\operatorname{num}(\sigma_{n+1})\\ &=\text{右边}. \end{align*} 左边=an+12n+1+num(αn)+bn+12n+1+num(βn)+c0=(an+12n+1+bn+12n+1)+(num(αn)+num(βn)+c0)=2n+1(2cn+2+sn+1cn+1)+(2n+1cn+1+num(σn))=2n+2cn+2+2n+1sn+12n+1cn+1+2n+1cn+1+sn=2n+2cn+2+(2n+1sn+1+num(σn))=2n+2cn+2+num(σn+1)=右边.

综上所述, P ( n ) P(n) P(n) 对任意的 n ∈ N n\in\mathbb{N} nN 都成立。

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

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

相关文章

OpenLayers:海量图形渲染之矢量切片

最近由于在工作中涉及到了海量图形渲染的问题,因此我开始研究相关的解决方案。在咨询了许多朋友之后发现矢量切片似乎是行业内最常用的一种解决方案,于是我便开始研究它该如何使用。 一、什么是矢量切片 矢量切片按照我的理解就是用栅格切片的方式把矢…

神经网络入门—自定义网络

网络模型 定义一个两层网络 import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F# 定义神经网络模型 class Net(nn.Module):def __init__(self, init_x0.0):super().__init__()self.fc1 nn.Linear(1, 10)self.fc2 nn.Linear(…

无人机装调与测试

文章目录 前言一、无人机基本常识/预备知识(一)无人机飞行原理无人机硬件组成/各组件作用1.飞控2.GPS3.接收机4.电流计5.电调6.电机7.电池8.螺旋桨9.UBEC(稳压模块) (二)飞控硬件简介(三&#x…

2024年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析

2024年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激…

Linux入门指南:从零开始探索开源世界

🚀 前言 大家好!今天我们来聊一聊Linux这个神奇的操作系统~ 🤖 很多小伙伴可能觉得Linux是程序员专属,其实它早已渗透到我们生活的各个角落!本文将带你了解Linux的诞生故事、发行版选择攻略、应用领域,还有…

记录vscode连接不上wsl子系统下ubuntu18.04问题解决方法

记录vscode连接不上wsl子系统下ubuntu18.04问题解决方法 报错内容尝试第一次解决方法尝试第二次解决方法注意事项参考连接 报错内容 Unable to download server on client side: Error: Request downloadRequest failed unexpectedly without providing any details… Will tr…

Cursor+MCP学习记录

参考视频 Cursor MCP 王炸!彻底颠覆我的Cursor工作流,效率直接起飞_哔哩哔哩_bilibili 感觉这个博主讲的还不错 所使用到的网址 Smithery - Model Context Protocol Registry Introduction - Model Context Protocol 学习过程 Smithery - Model …

testflight上架ipa包-只有ipa包的情况下如何修改签名信息为苹果开发者账户对应的信息-ipa苹果包如何手动改签或者第三方工具改签-优雅草卓伊凡

testflight上架ipa包-只有ipa包的情况下如何修改签名信息为苹果开发者账户对应的信息-ipa苹果包如何手动改签或者第三方工具改签-优雅草卓伊凡 直接修改苹果IPA包的签名和打包信息并不是一个推荐的常规做法,因为这可能违反苹果的开发者条款,并且可能导致…

深入解析Java内存与缓存:从原理到实践优化

一、Java内存管理:JVM的核心机制 1. JVM内存模型全景图 ┌───────────────────────────────┐ │ JVM Memory │ ├─────────────┬─────────────────┤ │ Thread │ 共享…

紫光展锐5G SoC T8300:影像升级,「定格」美好世界

影像能力已成为当今衡量智能手机性能的重要标尺之一。随着消费者对手机摄影需求日益提升,手机厂商纷纷在影像硬件和算法上展开激烈竞争,力求为用户带来更加出色的拍摄体验。 紫光展锐专为全球主流用户打造的畅享影音和游戏体验的5G SoC——T8300&#x…

【Java设计模式】第6章 抽象工厂模式讲解

6. 抽象工厂模式 6.1 抽象工厂讲解 定义:提供一个接口创建一系列相关或依赖对象,无需指定具体类。核心概念: 产品等级结构:同一类型的不同产品(如Java视频、Python视频)。产品族:同一工厂生产的多个产品(如Java视频 + Java手记)。适用场景: 需要创建多个相关联的产品…

Dify教程01-Dify是什么、应用场景、如何安装

Dify教程01-Dify是什么、应用场景、如何安装 大家好,我是星哥,上篇文章讲了Coze、Dify、FastGPT、MaxKB 对比,今天就来学习如何搭建Dify。 Dify是什么 **Dify 是一款开源的大语言模型(LLM) 应用开发平台。**它融合了后端即服务&#xff08…

Java后端开发-面试总结(集结版)

第一个问题,在 Java 集合框架中,ArrayList和LinkedList有什么区别?在实际应用场景中,应该如何选择使用它们? ArrayList 基于数组,LinkedList 基于双向链表。 在查询方面 ArrayList 效率高,添加…

nslookup、dig、traceroute、ping 这些工具在解析域名时是否查询 DNS 服务器 或 本地 hosts 文件 的详细对比

host配置解析 127.0.0.1 example.comdig 测试,查询 DNS 服务器 nslookup测试,查询 DNS 服务器 traceroute测试,先读取本地 hosts 文件,再查询 DNS 服务器 ping测试,先读取本地 hosts 文件,再查询 DNS 服务…

文件上传、读取与包含漏洞解析及防御实战

一、漏洞概述 文件上传、读取和包含漏洞是Web安全中常见的高危风险点,攻击者可通过此类漏洞执行恶意代码、窃取敏感数据或直接控制服务器。其核心成因在于开发者未对用户输入内容进行充分验证或过滤,导致攻击者能够绕过安全机制,上传或执行…

STM32 的编程方式总结

🧱 按照“是否可独立工作”来分: 库/方式是否可独立使用是否依赖其他库说明寄存器裸写✅ 是❌ 无完全自主控制,无库依赖标准库(StdPeriph)✅ 是❌ 只依赖 CMSIS自成体系(F1专属),只…

Flutter命令行打包打不出ipa报错

Flutter打包ipa报错解决方案 在Flutter开发中,打包iOS应用时可能会遇到以下错误: error: exportArchive: The data couldn’t be read because it isn’ in the correct format. 或者 Encountered error while creating the IPA: error: exportArchive…

SQL Server常见问题的分类解析(一)

以下是SQL Server常见问题的分类解析,涵盖安装配置、性能优化、备份恢复、高可用性等核心场景,结合微软官方文档和社区实践整理而成(编号对应搜索结果来源): 一、安装与配置问题 安装失败:.NET Framework缺失解决方案:手动安装所需版本.NET Framework,以管理员身份运行…

Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结

以下是 Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结: 1. Spring Security 核心原理 Spring Security 通过 Filter 链 实现安全控制,其核心流程如下&#xff1a…

Vue:路由切换表格塌陷

目录 一、 出现场景二、 解决方案 一、 出现场景 当路由切换时&#xff0c;表格操作栏会出现行错乱、塌陷的问题 二、 解决方案 在组件重新被激活的时候刷新表格 <el-table ref"table"></el-table>activated(){this.$nextTick(() > {this.$refs[t…