2024Spring> HNU-计算机系统-实验2-datalab-导引

前言

datalab考验对于位运算以及浮点数存储的理解,如果真的肯花时间去搞懂,对计算机系统存储的理解真的能上一个台阶。与课程考试关联性上来说不是很大,但对于IEEE的浮点数表示一定要熟练掌握。

导引

①实验工具包

要完成的是bits.c中的15个函数。

打开README可以查看实验提供的工具包中各部分是干什么作用的,摘录如下。

  • bits.c- ★完成这个文件中的15个函数
  • bits.h- 头文件
  • btest.c- 主btest程序(用于测试结果)
  • btest.h,decl.c,tests.c,tests-header.c- 用于生成btest
  • fshow.c-用于检查浮点表示的实用工具
  • ishow.c-用于检查整数表示的实用工具
  • dlc -编译器

②实验完成流程

重复以下三个步骤直至完成15个函数并且结果都正确,实验结束。

  • 补全bits.c中的某一个函数
  • 【编译检验】使用./dlc bits.c 测试是否通过编译(即是否合法),若没有问题则没有返回
  • 【结果检验】使用make clean && make btest && ./btest 测试结果是否正确,会输出错误信息和正确信息

注:每次改动bits.c后均需重新make clean && make btest,这里的&& 可以直接敲上去,命令行会默认逐个执行&&连接的语句,或者自行拆分逐个敲语句也可以。

【可选】使用./dlc -e bits.c打印每个函数使用的运算符数,操作数也需要满足限制。

【可选】小工具ishow和fshow,可以用来看一个数在int类型和float类型下有无符号形式的值。

    unix> ./ishow 0x27Hex = 0x00000027,	Signed = 39,	Unsigned = 39unix> ./ishow 27Hex = 0x0000001b,	Signed = 27,	Unsigned = 27unix> ./fshow 0x15213243Floating point value 3.255334057e-26Bit Representation 0x15213243, sign = 0, exponent = 0x2a, fraction = 0x213243Normalized.  +1.2593463659 X 2^(-85)linux> ./fshow 15213243Floating point value 2.131829405e-38Bit Representation 0x00e822bb, sign = 0, exponent = 0x01, fraction = 0x6822bbNormalized.  +1.8135598898 X 2^(-126)

最终可用./driver.pl来进行总体验证,得出最终分数。

③举例

1 bitAnd

/** bitAnd - x&y using only ~ and |*   Example: bitAnd(6, 5) = 4*   Legal ops: ~ |*   Max ops: 8*   Rating: 1*/

bits.c函数上方的注释中标注了完成该函数的要求以及函数功能描述。

这个函数要求使用按位或按位取反实现按位与,最多使用的符号数目是2个。

思路:使用德摩根定律将“按位与”操作转换为“按位取反”和“按位或”操作。

因此我们可以这样完成这个函数。

int bitAnd(int x, int y)
{return ~(~x | ~y);
}

注意:1-12依据各函数要求;13,14,15允许使用if,while等语句进行编写。

④期望

希望你能:

  • 独立完成实验,思路清晰
  • 进行经验总结,探究感悟
  • 熟练掌握IEEE浮点数表示
  • 真的从实验中收获知识与快乐

不要过于纠结于验收形式(验收分数差异真的不大)

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

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

相关文章

解决arcgis发布服务时报错:要素服务需要一个已注册的数据库

发布服务时发生以下报错: 双击列表中的报错项,在弹出的窗口中点击【已注册的数据库】后边的添加按钮,设置注册数据库的名称 点击添加按钮,配置数据库的基本信息(注意:这里配置的数据库连接需要与连接sde数据…

Linux使用宝塔面板部署Discuz结合内网穿透实现公网访问本地论坛

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board(以下简称 Discuz!)是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上&a…

鸿蒙实现一种仿小红书首页滑动联动效果

前言: DevEco Studio版本:4.0.0.600 效果描述:通过手指滑动列表,控制位置显示效果为:不论列表在什么位置下滑时下图粉色位置布局显示,手指上滑时下图粉色位置布局隐藏。 效果: 原理分析&…

helm与k8s

文章目录 一、helm二、K8S/K3S1.K8S基本组件1.1 资源对象1.2 核心组件1.3典型的创建 Pod 的流程1.4 Kubernetes 多组件之间的通信原理 2. YAML 文件2.1 Maps2.2 Lists2.3 使用 YAML 创建 Pod2.4 创建 Deployment 3.用 kubeadm 搭建集群环境3.1 环境3.2 镜像(如果你的…

江南大学酒科技馆OLED透明屏项目方案

一、项目概述 本项目旨在为无锡江南大学酒科技馆提供OLED透明屏解决方案,通过安装2x2的OLED透明屏,为参观者带来全新的视觉体验,同时提升酒科技馆的展示效果与科技感。 二、产品选型 本项目选用OLED透明屏,其具有高透明度、高对比…

低温漂、低功耗电压基准,用在精密数据采集系统,供电类设备,工业仪表,测试设备等领域

MSR015/MSR025 是低温漂、低功耗、高精度 CMOS 电压基准, 具有 0.05% 初始精度、低功耗特点。该器件的低输出电压迟滞和低长期输出电压 漂移特性,进一步提高稳定性和系统可靠性。 此外,器件的小尺寸和低运行 电流特性使其非常适合便携…

Leetcode面试经典150_Q122买卖股票的最佳时机II

题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大…

达梦备份与恢复

达梦备份与恢复 基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

xgo: golang基于-toolexec实现猴子补丁

注: 转载请注明出处, 原文链接。 概述 在这篇博客中,我将详细介绍 xgo 的实现细节。 如果你不知道,xgo 项目位于 https://github.com/xhd2015/xgo。 它的作用很简单,就是在每个 Go 函数的开头添加拦截器&#xff0…

【uniapp】个推H5号码认证一键登录(附代码)

前言 最近在做APP、h5产品,登陆注册成了难题。邮箱验证多数人不会使用,还是短信方便点,短信可以采用号码认证和验证码的方式,前者稍微便宜的,关于性价比和上手程度我推荐个推, 于是有了今天这篇案例记录&a…

Latex表格制作详细教程(table, tabular, multirow, multicolumn)

一、简单表格制作 Latex表格需要用到 table 和 tabular 环境。其中 table 环境里写表格的标题(caption)、表格的位置之类的。 tabular 环境则是绘制表格的内容。一个简单的表格绘制代码如下所示: \documentclass{article}\begin{document}\begin{table…

2024-04-08 NO.6 Quest3 自定义交互事件

文章目录 1 交互事件——更改 Cube 颜色2 交互事件——创建 Cube2.1 非代码方式2.2 代码方式 ​ 在开始操作前,我们导入上次操作的场景,相关介绍在 《2024-04-08 NO.5 Quest3 手势追踪进行 UI 交互-CSDN博客》 文章中。 1 交互事件——更改 Cube 颜色 …

P8749 [蓝桥杯 2021 省 B] 杨辉三角形

[蓝桥杯 2021 省 B] 杨辉三角形 题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1 , 1 , 1 , 1 , 2 , 1 , 1 , 3 , 3 , 1 , 1 , 4 , 6 , 4 , 1 , … 1,1,1,1,2,1,1,3,3,1,1,4,6,4,1, …

Python | Leetcode Python题解之第14题最长公共前缀

题目: 题解: class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:def isCommonPrefix(length):str0, count strs[0][:length], len(strs)return all(strs[i][:length] str0 for i in range(1, count))if not strs:return &quo…

IP网络对讲广播系统审计

前言 这个系统是前两年在一个内网遇到的,当时顺手试了一个admin登陆之后再没有然后了,最近发现有大佬分享关于这个系统的漏洞,于是就把自己当初看的几个漏洞分享一下,系统比较简单,漏洞点很多,不要做坏事哦…

大商创多用户商城系统 多处SQL注入漏洞复现

0x01 产品简介 大商创多用户商城系统是一个功能强大、灵活多变的新零售电商系统服务商。该系统支持平台自营和商家入驻,实现多元化经营模式,能够全面整合供应商、生产商、经销商和消费者等产业链资源,提高产品多样性,加快资金流动速度,并有助于减少不必要的成本输出。 0…

【二分查找】Leetcode 山脉数组的峰顶索引

题目解析 852. 山脉数组的峰顶索引 这到题使用暴力枚举的查找方法发现这段数组是有二段性的&#xff0c;峰顶左边的一段区间是一段递增区间&#xff0c;右边的一段区间是一段递减区间 算法讲解 class Solution { public:int peakIndexInMountainArray(vector<int>&am…

循序表实战——基于循序表的通讯录

前言&#xff1a;本篇文章主要是利用顺序表作为底层&#xff0c; 实现一个通讯录。偏向于应用&#xff0c; 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友&#xff0c; 如果顺序表不会写&#xff0c; 或者说没有自己实现过&#xff0c; 请移步学习顺序表相关内…

多线程重点知识(个人整理笔记)

目录 1. java 多线程 1.1. 什么是进程?什么是线程? 1.1.1. 进程 1.1.2. 线程 1.1.3. 多线程 2. 并行和并发有什么区别&#xff1f; 3. 守护线程是什么&#xff1f; 4. 创建线程有哪几种方式&#xff1f; 4.1. 线程的常见成员方法 5. 线程安全问题 5.1. synchronize…

深度探索Sketch:功能、历程、替代软件及技巧一览

Sketch 它是一个适合所有设计师的矢量绘图应用程序。矢量绘图也是设计网页、图标和界面的最佳方式。但除了矢量编辑的功能外&#xff0c;我们还增加了一些基本的位图工具&#xff0c;如模糊和颜色校正。 为什么选择Sketch Sketch 它是为图标设计和界面设计而生的。它是一个优…