深入理解:计算机作业1:datalab-handout

计算机系统_数据表示实验 (1)实验环境        Linux操作系统(2)实验内容    ①根据bits.c中的要求补全以下的函数:        int bitXor(int x, int y);        int tmin(void);        int isTmax(int x);        nt allOddBits(int x);        int negate(int x);       ... 阅读详情

这个作业还是有难度的,每一个小题相当于一个LeetCode题目,大部分自己是没想出来,除了部分上课讲过的。

第一小题:取反,与操作,来实现异或功能
  • bitXor - 仅允许使用~和&来实现异或
  • 例子: bitXor(4, 5) = 1
  • 允许的操作符: ~ &
  • 最多操作符数目: 14
  • 分值: 1

这个需要使用一个数电里面的基本知识,异或等于取反的组合。
在这里插入图片描述
知乎:理解异或

int logicalNeg(int x) {
  return ((x>>31)^1)&(((x^(~x+1))>>31)^0xffffffff)&1;
}

这里如果x是一个负数,那么((x>>31)^1就是false,就会短路,不在往后面执行,返回0。
如果x是一个正数,那么((x>>31)^1就是一个true,所以就会往后面执行。~x+1这个是求补码的操作,对于正数来讲,补码就是自己。x^ x等到的就是0,0^ 0xfffffff就是0xffffffff,最后&1就会等到1,放回true;

参考链接:
https://zhuanlan.zhihu.com/p/59534845?utm_source=qq
http://hh-yzm.com/index.php/archives/6/#
https://blog.youkuaiyun.com/weixin_42062229/article/details/93496909
https://blog.youkuaiyun.com/qq_40889820/article/details/88831962
https://blog.youkuaiyun.com/qq_40851744/article/details/103163205
https://blog.youkuaiyun.com/lzjsqn/article/details/61431048
https://blog.youkuaiyun.com/qq_36840162/article/details/78123072
https://blog.youkuaiyun.com/blackturtle/article/details/70177180

datalab-handout实验 这是计算机系统2的一个实验作业,花了半天多做完,感觉有几道题挺有趣的,也顺便做一下笔记,方便以后复习或工作时可以查看。 运行环境:ubuntu 16.04。 为了与实验语言一致,我用英文注释了。 /* * CS:APP Data Lab * * <Please put your name and userid here> * * bits.c - Source file with 阅读详情

相关推荐

linux按位运算datalab-handout

进入bits.c ,根据bits.c中的具体要求补全以下13个函数: •intbitXor(intx, int y); •inttmin(void); •intisTmax(intx); •ntallOddBits(intx); •intnegate(int x); •intisAsciiDigit(intx); •intconditional(int x, inty, int z)

iamubbTing的博客 6889

按位取反、按位与实现异或

**/}

sha_mo_li的博客 284

CSAPP Data Lab 实验指南:位运算与浮点数表示的底层实践

位运算(bitwise operation)是计算机底层编程的核心技术之一,它直接操作数据的二进制位,是理解计算机数据表示和实现高效算法的基石。其原理基于逻辑门电路,通过AND、OR、NOT、XOR以及移位等基本操作,实现对整数的精确控制。掌握位运算对于性能优化、系统编程和嵌入式开发具有重要价值,尤其在处理硬件接口、数据压缩和加密算法等场景中不可或缺。本文聚焦于CMU CSAPP课程经典的Data Lab实验,该实验要求仅使用有限的位运算符完成特定功能,是深入理解补码(Two's Complement)和I

weixin_30617737的博客 361

使用C语言用与(&)和非(~)实现异或(详解)

可以看到我们对4和5的不同位(第0位)进行的了标记,看1.和c.的结果我们发现前三位正好每一位都不同,但是第0位相同,因为我们第一部分先进行的&操作第二部分我们先 ~ 在&,因为&操作**不影响**二进制的**不同位的结果**,所以1.和a.的结果只有前三位不相同,这样我们在1.和c.的结果上进行 ~ 操作这样不同位我们就都变为**1**了!而前三位还是不相同!总的来讲我们要关心哪些位不相同,将都**不相同的位置操作为1**,**相同的位置改为不相同**,这样&之后得到的结果就是a和b的按位异或。

qq_73971557的博客 4220

卡内基梅陇 计算机系统 datalab 题目与解答

卡内基梅陇大学计算机核心课程15213 第一次作业bitlab的源文件,包含作业题目和答案,是我个人做的,总步数13题共160左右。只能保证正确性,但答案不唯一,且步数越少越好

datalab答案c文件

cmu 15213 14s 课程lab datalab 满分答案 150运算符

c/c++的&、异或、~、!等运算

位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。 C++ 书上说 (x&y)+((x^y)>>1)的功能是取两个数的平均值,怎么解释? (x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值,最后汇总。其中,一类是x,y对应位都是1,用x&y计算其平均值

xueruifan的专栏 1844

proxylab-handout.tar

CSAPP最后一个实验我自己写的源码,使用了LRU的缓存机制

高级操作符——位操作符讲解(移位操作符~ 按位与'&'操作符~ 按位或'|'操作符~ 按位异或'^'操作符)

首先介绍操作符与位操作符的区别,位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。 有时候合理利用一个位操作符,可以帮助我们少些十几行代码。 移位操作符。 左移位操作符。 << 将二进制序列左边抛弃,右边补0; 如: int i=1; 0000000000000000000000000000000...

Shangxingya的博客 3437

datalab handout

cmu datalab handout,ics课程的原版提交文件

CSAPP的datalab-位运算

CSAPP的实验datalab-handout,有详细的代码解释

计算机系统实验LAB2实验代码及详细实验报告:datalab-handout.tar:填写bits.c文件中尚未完成的各个函数的内容

题目来源:深入理解计算机系统实验二 实验题目:LAB2-datalab 实验目的:通过此次实验,进一步熟悉整型及浮点数的位表达形式,实现常用二进制运算的常用方法。 ReadmeFirst: 本次文件夹包括本次课程实验LAB2的内容,内含2个文件:datalab-handout.tar以及ReadmeFirst.txt。 本次实验内容经过在ubuntu12.04环境中测试,均可运行通...

乔卿的博客 1万+

高动态范围结构光三维测量技术:从多曝光融合到深度学习的演进与应用

本文深入探讨了高动态范围结构光三维测量技术的演进与应用,从传统的多曝光融合技术到深度学习驱动的创新方案。通过工业案例展示了该技术在提升测量精度和效率方面的显著优势,特别是在处理高反光、复杂表面时的突破性表现。文章还提供了针对不同工业场景的技术选型指南,帮助工程师优化三维测量解决方案。

weixin_29063979的博客 293

【CSAPP】【答案/解析】《深入理解计算机系统》实验一/datalab-handout实验

【CSAPP】【答案/解析】《深入理解计算机系统》实验一/datalab-handout实验

weixin_72899100的博客 2600

单片机技术入门与实战:从零基础到项目开发

单片机(MCU)作为嵌入式系统的核心组件,集成了CPU、内存和各种接口电路,广泛应用于智能家居、工业控制和汽车电子等领域。其工作原理基于实时控制和低功耗设计,通过定时器、中断系统和通信接口等功能模块实现各种控制任务。在物联网和智能硬件快速发展的背景下,掌握单片机开发技术成为电子工程师的重要技能。本文以STM32和PIC系列为例,详细解析单片机的基本概念、功能模块和选型指南,并分享从入门到项目实战的系统学习方法,帮助开发者在3-6个月内快速掌握这一关键技术。

weixin_35753291的博客 651

从零构建:如何用MATLAB工具箱打造你的第一个多体动力学仿真模型

本文详细介绍了如何使用MATLAB的Simscape Multibody工具箱从零开始构建多体动力学仿真模型,特别适合初学者学习倒立摆系统的建模与仿真。文章涵盖环境准备、坐标系设置、物理模型构建、参数化建模及性能优化等关键步骤,帮助工程师快速掌握这一强大的仿真工具。

water的专栏 963

深入理解计算机系统(CSAPP)实验二 datalab-handout

实验的目的是 填写 bits.c里面的函数,使其按照规定的要求(比如只能使用有限且规定的操作符和数据类型,不能使用控制语句等等)实现函数的功能。 同时 dlc文件是用来检测 bits.c 里面的函数是否 是按照要求编写的,有没有使用非法的数据类型等。 使用方法:./dlc bits.c 检测成功后,使用 btest 测试 每一个函数功能方面是否正确无误。使用方法:./btest,如...

aocang4831的博客 1424

DBSCAN聚类算法——机器学习(理论+图解+python代码)

一、前言 二、DBSCAN聚类算法 三、参数选择 四、DBSCAN算法迭代可视化展示 五、常用的评估方法:轮廓系数 六、用Python实现DBSCAN聚类算法 一、前言 去年学聚类算法的R语言的时候,有层次聚类、系统聚类、K-means聚类、K中心聚类,最后呢,被DBSCAN聚类算法迷上了,为什么呢,首先它可以发现任何形状的簇,其次我认为它的理论也是比较简单易懂的。今年在python...

huacha__的博客 20万+

CSAPP DataLab实验全面解析(包含代码和具体分析)

该实验是《深入理解计算机系统》课程的核心实践环节,要求通过位级操作实现13个函数,深入理解整数和浮点数的二进制表示。

小李独爱秋的博客 2834

【Unity】【2D】用连续图片生成动画Animation的简明步骤

本文介绍了Unity中使用2D连续图片制作2D动画Animation的简明步骤。

O青草O的博客 Unity和游戏制作知识分享 714

【Com通信】Com模块的事件帧发送及周期报文的快慢发送机制

Com模块的事件帧发送及周期报文的快慢发送机制

qq_36056498的博客 2334

[深入理解计算机系统]lab作业地址

http://csapp.cs.cmu.edu/3e/labs.html http://www.hh-yzm.com/ https://www.cnblogs.com/HacTF/p/8029197.html https://github.com/Ethan-Yan27/CSAPP-Labs 1. datalab https://blog.youkuaiyun.com/tzh476/ar...

Lord_sh的博客 926

【Go语言实战】(9) gRPC 实现一个简单微服务

文章目录写在前面1. 安装1.1 grpc1.2 proto1.3 protobuf2. 编写代码2.1 初始化项目2.2 编写proto2.3 编写服务端2.4 实现客户端3. 演示 写在前面 这一次我们用gRPC实现获取用户的信息 1. 安装 1.1 grpc grpc的安装直接go get即可 go get google.golang.org/grpc 1.2 proto 下载proto,我是下载这个的。 然后解压出来把bin目录放在直接放在系统变量当中 1.3 protobuf 我们在

面向生活编程 3272

CSAPP Data Lab环境搭建与位运算实战:从虚拟机配置到函数实现

计算机系统基础课程中,位级运算与数据表示是理解计算机底层工作原理的核心。通过位操作符(如与、或、非、异或、移位)直接操作二进制数据,可以深入掌握整数补码、浮点数IEEE 754标准等关键概念。这种底层技术能力对于优化算法、理解硬件交互以及进行系统级编程具有重要价值,常见于编译器开发、嵌入式系统和性能敏感型应用场景。本文聚焦于CSAPP Data Lab实验,详细讲解如何在Linux虚拟机中搭建实验环境,并逐步实现位运算函数,其中涉及**虚拟机配置**与**位操作**等关键热词,帮助读者在标准化环境中完成从环

weixin_33747129的博客 430

芒果YOLOv5改进55:损失函数篇之KLD:即插即用 芒果首发原创新颖|全网唯一更新KLD改进博客,通过 Kullback-Leibler 散度学习用于目标检测的高精度边界框,提升YOLOv5小目标

YOLOv5改进KLD损失函数:即插即用 原创新颖|芒果专栏独家首发

包括YOLOv5、YOLOv7、YOLOv8等模型改进 661

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

linux中异或符号,C的|、||、&、&&、异或、~

位运算位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。其中,按位取反运算符是单目运算符,其余均为双目运算符。位运算符的优先级从高到低,依次为~、&、^、|,其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方...

weixin_29449593的博客 1929

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 光学:数值孔径
下一篇: pytorch学习:搭建自己的数据集
dlvector
博客等级 码龄10年 85粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值