北航计算机学院-计算机组成原理课程设计-2020秋

PreProject-入门测试


本系列所有博客,知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除。


计小组传信息

计小组暑假闲来无聊,找到了手中的5个各不相同的硬币,每个硬币只存在正面放置和反面放置两种情况,不能依靠侧面竖立。这五个硬币大小各不相同,计小组的强迫症让他只能由小到大对硬币进行排放(即五个硬币的码放顺序必须固定)。计小组想通过这五个硬币的放置情况编写一张密码表来和朋友传递信息。请问计小组最多可以传递多少种不同的信息呢?

用二进制表示:例如0b1010,0b0101010,不需要写前置0。

答案:0b100000

用十进制表示:

答案:32

五枚硬币摆放位置是固定的,而每枚硬币只有正反两个状态,那么根据乘法原理一共自然是25=32个状态。


计小组的求助

计小组暑假学习不同的进制,他将一个十进制数字数字转换为二进制、八进制、十六进制,并非常恶趣味的点了几滴墨水上去,假装来求助你,请你把污渍的地方进行填补。

二进制: 1_01**_0000_1110_****_****

八进制: *00*33*

十六进制:*4*e*8

请用十六进制将答案表示出来:

答案格式:请直接输入数字,例如1b即可。注意需要小写。

答案:140ed8

二进制、八进制、十六进制表示了同一个数,不同位置有空缺,只需要将他们全部转化为二进制,相互对比补上空缺即可。需要注意技巧:八进制每个位可以直接展开为三个二进制位,十六进制每个位可以直接展开为四个二进制位。

二进制:1_01**_0000_1110_****_****

八进制:***_000_000_***_011_011_*** (每四位一分隔,写成:*_**00_0000_***0_1101_1***)

十六进制:****_0100_****_1110_****_1000

通过对比,互通有无,容易发现原数写成二进制应该是:1_0100_0000_1110_1101_1000,写成十六进制应该是0x140ed8


计小组学习补码、反码以及原码

计小组被拒绝后决定要好好学习,学习了补码和反码以及原码的转换。

十进制: -113

原码:

答案格式:请用8位表示,每四位用_分割,1111_1111,下同):

答案:1111_0001

反码:

答案:1000_1110

补码:

答案:1000_1111

有符号数的表示中,最前面的一位代表符号位,0为正,1为负。原码的符号位不变,其余所有位取反得到反码。反码再加1得到补码。


计小组学习有符号补码

补码为:1011_0101

十进制有符号表示,例如-10:

答案:-75

八进制有符号表示,例如-14:

答案:-113

十六进制有符号表示,例如-3a:

答案:-4b

牢记补码的性质:对补码再取补码即得到原码。因此从有符号补码可以得到原码为:1100_1011,从而将其转换为十进制、八进制和十六进制即可。


粮食征收

在遥远的康皮特王国,国王召见了聪明而又伶俐的计小组,来帮他解决一个有关粮食称重的问题
在康君一世12年的秋收中,国王派税务大臣前往农村收粮食,按照农民人头和土地数量的不同,需要征收1-256千克粮食(征收的数额必须为整数千克,即不能征收类似25.5kg)。为了准确的称量出粮食的重量,每个税务大臣都携带着一个天平和若干砝码,砝码的质量为整数千克

在称重的时候,大臣们可以将手中的砝码放在左端,将粮食放在右端,从而得出粮食的重量。例如:一位大臣手里有3kg,5kg,8kg三个砝码,那么他就可以称量出3,5,8,3+8=11,5+8=13,3+5+8=16等重量的粮食

为了称量出从1到256的每1千克,大臣们要携带很多砝码,一个最简单的策略是,每个大臣都携带256枚砝码,分别重1,2,…,256千克。但是这样会对国库的铁存量造成很大的浪费。

现在国王希望知道,每个大臣最少携带几枚砝码,就可以完成称量1-256的任务?计小组面对这个问题感到很困难,所以她向同学们求助

完成称量1-256的任务至少需要多少枚砝码?请填入一个正整数,不要有多余的字符

答案:9

后来大臣们突然想到,不一定只在左端放砝码,右端放粮食。砝码在左右端都可以放。如果大臣携带了3kg和5kg两枚砝码,这他不光可以继续称量出3,5,3+5=8这三种重量,还可以称量出5-3=2kg的重量。采用两边放砝码的方式,大臣们觉得可以减少携带的砝码数量

同样完成称量1-256的任务,在两端都可以放砝码时,至少需要多少枚砝码?请填入一个正整数,不要有多余的字符

答案:6

对于第一种情况,只能在天平左边放砝码,问题被抽象为:有一列数,在其中任意选取一些数相加,其结果可以等于1-256之间的所有数,求这一列数的最小个数。

对于这一问题,题目中已经给出了例子:最简单的策略,这一列数就是1, 2, 3, …, 256,一共256个,想要表示1-256范围内的任意数都可以直接拿出一个数。题目提到,这样的方法显然造成了数的浪费,但是我们需要思考,“砝码的浪费”本质是什么?从以下的角度考虑:例如我们想要表示100这个数,按照上述最简单的方法,我们可以选择100 = 100,但同时还可以选择100 = 1 + 99, 100 = 2 + 98, …,换言之,如果我们发现一种重量可以由多个砝码组合表示,那就意味着必然有砝码的浪费。基于这样的考虑,如果我们能找到一列数,它在求和表示1-256所有数的过程中,对每一个数都有唯一的表示方法,那么这一列数必然是个数最少的(因为如果个数更少,就必然有一些数无法被表示)。再换言之,这些砝码中任意不同的两个组合,其重量之和必然是不同的(因为一旦有相同的,就说明一个重量可以被两种砝码组合表示,也就造成了砝码的浪费)。

有了上述分析,我们似乎找到了一个更明确的目标。下面假设我们选取了n个砝码,重量分别是a1, a2, a3, …, an,如果这些砝码已经满足了:任意两个不同的组合,其重量之和必然不同,那么这n个砝码一共可以表示多少个重量呢?我们在选取砝码求和的过程中,对于每一个砝码而言,都有选或不选两种可能,那么n个砝码一共可以创造2n种组合(包含了一个砝码都不选的0组合),而如果每个砝码组合的重量和都不同,n个砝码就可以表示2n个不同的重量(包含了0重量),而如果不计算0重量,n个砝码最多可以表示(2n-1)个不同重量。依据题目,我们需要表示1-256,一共256个不同的重量,则有2n-1 > 256,n ≥ 9。我们至少需要9个砝码来表示1-256范围内所有的重量。

对于第二种情况,一列数在选取一些数相加的基础上,还可以相减。现在我们从一堆砝码中选取的砝码组合,本身就可以表示多个重量:砝码组合中的砝码可以摆放在天平左边,也可以摆放在天平右边。使用和刚才相同的分析思路,我们的目标变成:这些砝码和其摆放位置任意不同的两个组合,其表示的重量必然不同。例如砝码1, 3, 5就不满足上述要求,因为4这个重量既可以由1+3表示,也可以由5-1表示,这造成了砝码的浪费。

还是假设我们选取了n个砝码,重量分别是a1, a2, a3, …, an,如果这些砝码已经满足了:这些砝码和其摆放位置任意不同的两个组合,其表示的重量必然不同,那么这n个砝码一共可以表示多少个重量呢?这一次,选取砝码表示重量的时候,对每一个砝码而言,它都有放在左边、放在右边、不放三种选择(即取正、取负、不选取三种选择),那么n个砝码一共可以创造3n个不同的摆放位置组合(包含了不放任何砝码的0组合),如果不计0重量,则可以表示(3n-1)个不同重量。但要注意的是,这些重量包含了负数,并且负数和正数的情况一一对应(例如左边放砝码5,右边放砝码3,称出重量2;而左边放砝码3,右边放砝码5,同样称出重量2,这是两种不同的砝码和位置组合,实质上称出的重量分别是2和-2)。因此这(3n-1)个重量排除负数重复,应当只有(3n-1)/2个不同重量。依据题目,我们需要表示1-256,一共256个不同的重量,则有(3n-1) / 2 > 256,n ≥ 6。我们至少需要6个砝码来表示1-256范围内所有的重量。

上面两段分析已经给出了本题的答案,不过还有一个问题没有解决:“任意两个不同的组合,其重量之和必然不同”,以及“砝码和其摆放位置任意不同的两个组合,其表示的重量必然不同”,这两个前提能否满足呢?换言之,我们只推断出了砝码数量的最小值,那是否有对应数量的砝码能够真正满足呢?答案是肯定的。对于只能放在天平左边的情况,我们选取2的幂重量的一列砝码:1, 2, 4, 8, 16, 32, 64, 128, 256,就可以表示1-256范围内的所有数,而且表示方法是唯一的。对于可以放在左边也可以放在右边的情况,我们选取3的幂重量的一列砝码:1, 3, 9, 27, 81, 243,就可以表示1-256范围内的所有数,而且表示方法是唯一的。

北航计算机组成原理课程设计-2020秋 PreProject-入门测试相关推荐

  1. 北航计算机组成原理课程设计-2020秋 【系列完结】Verilog或ISE高级特性与自动化测试

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog或ISE高级特性与自动化测试 本系列所有博客,知识讲解.习题以及答案均由北航 ...

  2. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog工程的设计开发调试

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog工程的设计开发调试 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院 ...

  3. 北航计算机组成原理课程设计-2020秋 PreProject-数制

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-数制 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除. ...

  4. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog语法

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog语法 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理 ...

  5. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-前言

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE - 前言 本节内容完全转载自北航计算机学院计算机组成原理课程组,原文链接:Verilog ...

  6. 北航计算机组成原理课程设计-2020秋 PreProject-Logisim-2^n mod 5问题

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-2^n mod 5问题 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析 ...

  7. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog题目实例与分析

    北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Verilog HDL 与 ISE Verilog题目实例与分析 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算 ...

  8. 北航计算机组成原理课程设计-2021秋 PreProject-MIPS-测试程序设计

    北航计算机学院-计算机组成原理课程设计-2021秋 PreProject-MIPS 测试程序设计 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作, ...

  9. 北航计算机组成原理课程设计-2021秋 PreProject-MIPS-MIPS 指令集架构

    北航计算机学院-计算机组成原理课程设计-2021秋 PreProject-MIPS MIPS 指令集架构 本系列所有博客,知识讲解.习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔 ...

最新文章

  1. com.android.vivi删除,vivi命令详解
  2. 美容院会籍管理,看着简单,其实很复杂
  3. 使用COE脚本绑定SQL Profile
  4. 下一代 Web 应用模型 —— Progressive Web App (PWA)
  5. [Android] 开源View组件(一)
  6. express的基本用法
  7. Unix环境高级编程笔记:12、高级IO
  8. matplotlib 中文_Python 关于matplotlib无法显示中文字体的解决方法
  9. 一文搞懂HTML+CSS+JavaScript
  10. 态度决定一切细节决定成败_字体设计可以决定设计的成败:选择字体的过程
  11. C 语言编码规范(MISRA-C-:2004)
  12. MSP430单片机,大学的回忆
  13. 1597: [Usaco2008 Mar]土地购买
  14. 文本输入框input实现字母大小写转换
  15. 梦想从来不是手里的钻石,而是放到天上的风筝!
  16. 北漂9年了,37岁的我跳槽进了国企,开启了一段新的人生旅程
  17. 十一月典型安全事件盘点
  18. SQL Server HA - 数据库镜像 (Mirroring)
  19. c语言字符游动程序,C语言实现扫雷小游戏详解
  20. 面向对象程序设计课程设计——MFC实现同学通讯录管理系统

热门文章

  1. Nacos配置中心持久化到MySQL数据库(创建MySQL数据库、Nacos配置MySQL数据库连接、Nacos添加配置 )
  2. 《虚空之遗》zvt轰炸艇流三开攻略
  3. java输入矩阵规格和行数,输出矩阵
  4. Linux虚拟机网卡配置(创建静态ip)
  5. 工作笔记——解决is not a supported wheel on this platform问题
  6. 别再逼三星了,它在起死回生的路上挣扎很久了...
  7. 安卓不自动隐藏系统相机APP
  8. 【四圣龙神录的编程教室】第24章、来制作boss吧
  9. 【MaixPy 教程】用mixly玩转K210——一键本地模型训练
  10. Thymeleaf+SpringMVC,在html中获取数据session、request参数的值