用bis和bic实现所有位级操作

bic和bis实现或、与、取反、异或 练习题2.13: 从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型。它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令。只有bis(位设置)和bic(位清除)这两种指令。两种指令的输入都是一个数据字x和一个掩码字m。它们生成一个结果z,z是由根据掩码m的位来修改x的位来得到的。使用bis指令,这种修改就是在m为1... 阅读详情
在Digital Equiment 的VAX计算机中,只有两种对位的操作函数:位设置bis和位清除bic。
其中bis(x, m)表示对于m中为1的位,置x对应的位为1. bic(x, m)正好相反,对于m中为1的位,置x对应的位为0。参数m有个更常用的称谓——掩码。对于掩码你一定不陌生,子网掩码、颜色掩码... 简单地说,掩码就是个过滤器,滤掉我们不希望得到的东西。

好了,扯远了,言归正传。


1. 位或(|)的实现
首先考虑一下位或的定义,两个参数的某一位至少有一为1则结果的对应位为1。那么我们该好好利用一下掩码了,我们要做x和y的位或,首先我们把x拿出来,令结果等于x(什么?这就结束了?当然不是)。我们还缺什么?x为0而y为1的那些位,结果应该为1。那我们就把y当做掩码,筛选掉y中为0的位,把y为1的位都赋值给结果(即使x已经将结果的改位赋值为1也不影响),就可完成位或的实现。

结果:bis(x, y)


2. 位取反(~)的实现
同样利用取反的定义和掩码的作用,我们可以简单得到对x(一个字长)位取反的做法:把0xFFFFFFFF(32位机)用x做掩码,过滤掉x为1的位。

结果:bic(0xFFFFFFFF, x)


3. 位与(&)的实现
可以简单根据布尔运算:x &
深入理解计算机系统-课后习题-2.13-bis和bic命令实现或和异或运算 Talk is cheap, show me the code. 阅读详情

相关推荐

MSP430位操作与跳转指令:嵌入式底层编程的核心技术

在嵌入式系统开发中,指令集是CPU执行操作的基础语言,它定义了硬件能完成的所有任务及其执行方式。从原理上讲,指令集通过编码操作码和操作数,控制数据路径和寄存器,实现算术运算、逻辑判断和流程控制。其技术价值在于直接决定了代码的执行效率、功耗和尺寸,尤其在资源受限的微控制器中至关重要。应用场景广泛,包括外设寄存器配置、实时状态轮询、低功耗管理和算法实现等。本文聚焦于MSP430微控制器,深入解析其核心的位操作指令(如BIC、BIS、BIT)和跳转指令,这些是进行GPIO控制、中断处理和流程分支的底层关键。理解这

weixin_30463341的博客 358

MSP430指令集精解:位操作与程序流控制实战指南

在嵌入式系统开发中,微控制器(MCU)的指令集是软件与硬件交互的底层桥梁。其核心原理在于通过精简指令集(RISC)直接操控寄存器与内存映射的外设位,实现对硬件资源的原子级控制。这种直接操作的技术价值在于能以最小的开销和最高的确定性完成特定任务,是编写高效、可靠嵌入式代码的基石。典型的应用场景包括GPIO控制、外设寄存器配置以及实时状态监测。本文聚焦于MSP430系列MCU,深入剖析其核心的位操作指令,如BIC(位清除)、BIS(位置位)和BIT(位测试),并详解其与CMP(比较)、条件跳转等程序流控制指令的

weixin_33806914的博客 410

深入理解计算机系统第三版第二章答案

  练习题2.13   分析 bis 和bic都是可以看作系统已经提供好的函数,所以可以用and or not 组合设计 bis(x,m)--置数--作用: 在x这个二进制串中把m中为1的位置全部变成0,m中为0的 不变,可以看到bis(x,m)结果和x or m 一样 例如 ,下面的例子中m前几位都是1,所以bis(x,m)中 前几位被修改为1,后几位不变 x=10101110...

MopTrain的博客 2836

STM32单片机语音提示盲人拐杖整点报时夜间警示超声波测距

STM32单片机语音提示盲人拐杖整点报时夜间警示超声波测距 关键词:语音提示盲人拐杖 整点报时 超声波测距拐杖

LS840233684的博客 2047

使用DDR4控制器实现多通道数据读写

这种高带宽对于大量的数据的应用非常重要。对于Controller/PHY Mode 的选择,我们使用Controller + PHY模式,Xilinx UltraScale/UltraScale+等高端FPGA通常包含硬核PHY,选择Controller + PHY模式可直接利用硬核,降低功耗和延迟,并且此模式的开发更易上手。在Basic页面下,首先勾选上AXI4 Interface选项,我们选用的内存接口速度为2133MHz的ddr4芯片,由于双沿触发,频率为1066MHz,那么周期应为938ps。

weixin_38828382的博客 1363

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 3981

LSTM cell结构的理解和计算

LSTM是传统RNN网络的扩展,其核心结构是其cell单元,网上LSTM的相关资料繁多,质量参差不齐,下面主要结合LSTM神经网络的详细推导和 Christopher Olah的blog两篇文章中的内容进行说明。主要介绍网络如何计算,为何这么算先不展开:)。前者一副图加上29个公式,简洁明了;后者娓娓道来,适合初学者。首先是LSTM cell最常见的结构图: 这是变形的版本(找不到更清晰的版本了),

songhk0209的博客 2万+

数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015

想必大家都遇到过数字大小超过int类型范围的情况,是不是碰到int放不下的数字自然就会想到,long int,long long int,甚至unsigned long long int呢。但是有一些出题者就很可恶,偏要出一些连unsigned long long int也放不下的算法题,应对这些问题时,我们是否有相应的应对方法呢?答案是:当然有,高精度就是一种应对这种问题时很好的解决办法。相信你在看完这篇文章后能对高精度有着更深更好的理解。我会循序渐进的来讲,这样大家也更容易听懂。

2303_79329831的博客 1229

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

Windows系统下Mamba环境配置实战:从零到编译成功

本文详细记录了在Windows系统下从零开始配置Mamba深度学习环境的完整实战过程。针对官方不直接支持Windows的难点,文章提供了关键解决方案,包括安装特定版本的Python、PyTorch与第三方Triton,以及修改源码以解决Windows编译器的兼容性问题,最终成功编译并运行Mamba-SSM。

weixin_28842269的博客 500

游戏战斗系统架构设计的演绎之路——从一坨意大利面条到一座精密钟表

摘要:游戏战斗系统架构设计的演进之路 本文系统梳理了游戏战斗系统从早期街机到现代3A大作的架构发展历程。70-80年代的街机游戏采用基础碰撞盒判定(如《街头霸王》);90年代实现动画融合与状态机架构(《最终幻想》《拳皇》);2000年后MMO引入服务器验证与同步技术(《魔兽世界》);3D时代融合物理引擎与智能AI(《GTA5》《只狼》);移动端则发展出轻量化架构与云端判定(《王者荣耀》)。现代战斗系统已实现模块化、数据驱动和热更新,未来趋势是AI裁判与云战斗系统。这一演进过程展现了技术与创意的完美结合,数百

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 800

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

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

上一篇: ZOJ 3430 Detect the Virus(AC自动机+解码)
下一篇: HDOJ 3183 A Magic Lamp
Uranux
博客等级 码龄15年 16粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值