有条件地使用按位运算符

2024-04-27

条件运算符如何使用按位运算符表示?

这是一个家庭作业问题,我必须仅使用按位运算来实现条件运算符。那就很简单了,如果if允许使用语句,但它必须是严格的按位运算符。

仅运营商!, ~, &, ^, |, +, >>, and <<可以使用。不if可以使用语句或循环。

该函数采用三个整数,其工作方式与普通条件运算符类似。第一个参数被评估为零或非零。如果第一个参数为零,则返回第二个参数。如果第一个参数非零,则返回第三个参数。

我希望有一个简单的算法可以解决这个问题。任何关于从哪里开始的想法都会有很大的帮助。


是否允许移位作为按位运算符?允许算术运算符吗?

您的编辑并不完全清楚,但我认为您需要实现等效的

a ? b : c

where a, b and c是整数。这又相当于

a != 0 ? b : c

实现这一目标的一种方法是找到一种方法将非零值a仅使用按位运算符转换为全一位模式。如果我们弄清楚如何做到这一点,那么剩下的事情就很容易了。现在,我并没有立即记得任何可以做到这一点的巧妙技巧(我相信它们确实存在),而且我不确定哪些运算符是允许的,哪些是不允许的,所以现在我只使用类似的东西

a |= a >> 1; a |= a >> 2; a |= a >> 4; a |= a >> 8; a |= a >> 16;
a |= a << 1; a |= a << 2; a |= a << 4; a |= a << 8; a |= a << 16;

对于 32 位整数类型,当(且仅当)原始数据中至少设置了一位a,上面的结果应该是所有位a设置为 1。(假设我们正在使用无符号整数,以避免与有符号值移位相关的问题)。我再次确信,必须有一种更聪明的方法来做到这一点。例如:a = !a - 1,但我不知道是否! and -被允许。

一旦我们这样做了,原来的条件运算符就相当于

(a & b) | (~a & c)

Done.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有条件地使用按位运算符 的相关文章

  • 在动态事件处理程序中引用“this”

    在我的 myClass 类中 我使用 Reflection Emit 为 myClass 类成员之一动态编写事件处理程序 我已经成功地做到了这一点 现在 我想修改事件处理程序以调用 myClass 类中的实例方法之一 但是 我无法弄清楚如何
  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 起订量要求?违背了目的?

    是否需要虚拟化您想要模拟的所有属性访问器就违背了模拟的目的 我的意思是 如果我必须修改我的对象并虚拟化我想要模拟的每个访问器 我难道不能继承我的类并自己模拟它吗 你的问题非常有效 但如果你仔细想想 没有其他方法可以模拟课程 如果你采用一个接
  • 是否允许将类模板类型参数键入相同的名称?

    这似乎可以在 MSVC 中按预期编译甚至工作 但它是合法的 C 代码吗 它是否能保证执行此处所期望的操作 即将模板类型导出到结构体的同名用户 template
  • 为什么这个函数指针赋值在直接赋值时有效,但在使用条件运算符时无效?

    本示例未使用 include 在 MacOS10 14 Eclipse IDE 上编译 使用 g 选项 O0 g3 Wall c fmessage length 0 假设这个变量声明 int fun int 这无法通过 std touppe
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • Paradox 表 - Oledb 异常:外部表不是预期的格式

    我正在使用 Oledb 从 Paradox 表中读取一些数据 我遇到的问题是 当我将代码复制到控制台应用程序时 代码可以工作 但在 WinForms 中却不行 两者都以 x86 进行调试 我实际上只是复制代码 在 WinForms 应用程序
  • 默认值 C# 类 [重复]

    这个问题在这里已经有答案了 我在控制器中有一个函数 并且我收到表单的信息 我有这个代码 public Actionresult functionOne string a string b string c foo 我尝试将其转换为类似的类
  • 指向字节数组的指针

    由于 Misra C 的要求 我的一位同事想要使用指针声明 但我遇到了一些问题 Misra 安全关键指南 不会让我们纯粹的程序员使用指针 但会让我们对数组字节进行操作 他打算获取一个指向字节数组的指针 因此我们不会在堆栈上传递实际的数组 T
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • 更改 IdentityServer4 实体框架表名称

    我正在尝试更改由 IdentityServer4 的 PersistedGrantDb 和 ConfigurationDb 创建的默认表名称 并让实体框架生成正确的 SQL 例如 而不是使用实体IdentityServer4 EntityF
  • 以编程方式更新 ClickOnce 应用程序的部署清单会导致缺少 4.0 中所需的 <兼容框架> 元素

    我正在致力于自动化 NET 4 0 ClickOnce WPF 应用程序的安装程序 该应用程序需要在应用程序配置文件 我经历了寻找必须遵循的具体步骤的棘手过程Mage exe http msdn microsoft com en us li
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • #pragma pack(16) 和 #pragma pack(8) 的效果总是相同吗?

    我正在尝试使用来对齐数据成员 pragma pack n http msdn microsoft com en us library 2e70t5y1 28v vs 100 29 aspx 以下面为例 include
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul

随机推荐

  • excel vba 将 system.collections.hashmap 导入模块

    从我的内心微软 Excel 2010安装我已经打开了Visual Basic 编辑器 选项卡开发工具 gt Visual Basic 在 的里面Visual Basic 编辑器我右键单击进入项目窗口并创建了一个module 插入 gt 模块
  • Rspec 控制器错误需要 <"index"> 但使用 <""> 渲染

    作为测试新手 我正在努力让一些控制器测试通过 以下控制器测试会引发错误 expecting lt index gt but rendering with lt gt 我的控制器规格之一具有以下内容 require spec helper d
  • Android AudioRecord 与 MediaRecorder 录制音频

    我想在我的 Android 手机上录制人声 我注意到 Android 有两个类可以做到这一点 录音带 http developer android com reference android media AudioRecord html a
  • SlideToggle() 可以检测 SlideUp 或 SlideDown 吗?

    I know hover 默认设置为handIn and handOut 但是我能检测到吗slideUp and SlideDown inside SlideToggle 有这样的代码 divName slideToggle functio
  • scala.Equals 特征中的 canEqual()

    从源代码来看scala Equals scala here https github com scala scala blob 2 11 x src library scala Equals scala package scala trai
  • 在 JavaScript 中使用正则表达式验证信用卡输入

    我一直在努力完成这件事但没有成功 我正在使用正则表达式根据通过单选按钮选择的信用卡类型来验证用户输入的信用卡号 但我一直保持警惕if陈述 看起来所有的if else语句经过测试 There is the HTML code fragment
  • 在 VsCode 中使用 Windows 文件对话框打开文件/文件夹

    当我尝试在 VsCode 中打开文件或文件夹时 Windows 文件对话框未打开 相反 VsCode 的顶部中间会出现一个框来打开文件 文件夹 如何再次使用 Windows 文件对话框 Windows 文件对话框默认打开文件 文件夹 但不知
  • 编译器如何解析在变长数组之后声明的变量的地址?

    假设我有以下函数 它使用可变长度数组 void func int size int var1 int arr size int var2 编译器如何确定地址var2 我能想到的唯一方法就是放置arr after var1 and var2
  • 将一个元素移到数组末尾

    我有一个包含 parank 值列表的数组 考虑下面的数组 Array 0 gt stdClass Object pagerank gt 3 1 gt stdClass Object pagerank gt 1 2 gt stdClass O
  • 可以用MongoDB做一个关系型数据库吗?

    我将使用 MongoDB 制作一个学生管理系统 我将为学生准备一张桌子 另一张用于记录出勤记录 我可以使用出勤表中的钥匙来访问学生表吗 如下图所示 如何 MongoDB 背后的想法是消除 或至少最小化 关系数据 您是否考虑过将出勤数据直接嵌
  • 获取矩阵条目的排名?

    假设一个矩阵 gt a lt matrix c 100 90 80 20 2 2 gt a 1 2 1 100 80 2 90 20 假设我想将矩阵的元素转换为等级 gt rank a lt rank a gt rank a 1 4 3 2
  • 比较ios中的两个时间值? [复制]

    这个问题在这里已经有答案了 在我的应用程序中 我想检查当前时间是在变量中保存的时间之前还是之后 就像我的时间1一样time1 08 15 12 我的时间2是time2 18 12 8 所以我想比较 time1 和 time2 目前这些变量是
  • 即使设置了 cookie,RabbitMQ 身份验证也会失败

    我最近在运行 lattePanda 的 Windows 10 上安装了带有 ErlanOTP 的rabbitmq 我运行rabbitmqctl status并收到以下错误 C Program Files RabbitMQ Server ra
  • 如何在 Symfony 4 表单的输入上添加占位符?

    在我的 Symfony 4 表单中 我尝试为我的输入获取占位符 我尝试了以下操作 但收到错误消息 表明这是不允许的 有什么想法我还能如何实现这一目标吗 gt add firstname TextType class label gt Vor
  • 从PHP7.4升级到PHP8,是否可以忽略某些错误

    我们有一个巨大的代码库 在访问未定义的变量或数组键时 我们忽略了 php7 的通知 例如 somethingThatMayNotExist REQUEST somethingThatMayNotExist PHP8 现在会抛出错误 我知道我
  • 哪个开源许可证没有分叉[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我记得读过有关开源许可证的文章 该许可证不授予分叉权限 我不记得它的名字了 我想在这里问可能比浏览整个
  • 仅使用 Hunit 在 Haskell 中创建并运行最小测试套件

    我对 Haskell 比较陌生 所以如果我的术语不太正确 请提前道歉 我想为一个非常简单的项目实现一些简单的单元测试 通过管理cabal 我注意到这个非常相似的问题 https stackoverflow com questions 118
  • 如何在 Rails 3 的功能测试中使用 polymorphic_path

    我正在尝试使用polymorphic path在 Rails 3 的功能测试中 一开始我会得到 NoMethodError undefined method polymorphic path for
  • 在R中使用grepl完成单词匹配

    考虑以下示例 gt testLines lt c I don t want to match this This is what I want to match gt grepl is testLines gt 1 TRUE TRUE 不过
  • 有条件地使用按位运算符

    条件运算符如何使用按位运算符表示 这是一个家庭作业问题 我必须仅使用按位运算来实现条件运算符 那就很简单了 如果if允许使用语句 但它必须是严格的按位运算符 仅运营商 gt gt and lt lt 可以使用 不if可以使用语句或循环 该函