在c二进制中,测试数字是否在范围内

2023-11-22

这是我无法解开的谜题的一部分。该函数接受三个输入。第一个是 int,第二个是下界,第三个是上限。我需要测试第一个数字是否在下限和上限内(包括下限和上限)。

如果在范围内则返回1,否则返回0。 问题是我只能使用

! ~ & ^ | + << >> 

操作,并且只能是其中 20 个操作的组合。此外,只能使用 int 变量,不能使用 if 语句、循环或函数调用。

Range(int x, int lower, int upper){
//... some code here
return retVal;
}

显然我明白这里的逻辑。 If((x >= lower) && (x 、== 或 &&。


您可以进行比较谓词x < y(如果为 true,则返回 -1,如果为 false,则返回 0)如下所示:(请参阅 Hacker's Delight,第 2 章,子章比较谓词)

((x - y) ^ ((x ^ y) & ((x - y) ^ x))) >> 31;

您没有列出减法,但您可以模拟x - y with ~(~x + y)

使用其中两个谓词,使1 & ~((x < lower) | (upper < x))

这显然假设 2 的补码负数和 32 位整数在溢出时换行。所以这不是可移植的,但这是这种技巧的常态。


根据要求,这使得总的事情:

int in_range(int x, int lower, int upper)
{
    int p = ((x - lower) ^ ((x ^ lower) & ((x - lower) ^ x))) >> 31;
    int q = ((upper - x) ^ ((upper ^ x) & ((upper - x) ^ upper))) >> 31;
    return 1 & ~(p | q);
}

它仍然有一些减法,如果你真的想要的话,替换它们是微不足道的。

通过使用可以使它稍微短一点>= and <=谓词(也可以在 Hacker's Delight 中找到)。

这是我的网站说的correct.


这是一种使用较少运算的方法,请记住我们不能使用减法:

int p = (x | ~upper) & ((x ^ upper) | (~upper + x));
int q = (lower | ~x) & ((lower ^ x) | (~x + lower));
return 1 & ((p & q) >> 31);

它使用<=来自 HD 的谓词,看起来像(x | ~y) & ((x ^ y) | ~(y - x))以其纯粹的形式。

这是我的网站说的correct.

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

在c二进制中,测试数字是否在范围内 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 重载<<的返回值

    include
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 我可以在基类中重载纯虚方法吗?

    在下面的示例中 我有一个带有纯虚方法 又名 FUN1 和普通方法 又名 FUN2 的抽象类 include
  • 使用返回 impl 特征的泛型函数“借用的值寿命不够长”

    我从这个 Rust 代码中得到一个意外的错误 struct Container lt a gt x a i32 trait Reply impl Reply for i32 fn json
  • For 循环内的 Postgresql 更新

    我对 postgresql 还很陌生 并且在使用 for 循环更新表中的空值列时遇到问题 我正在处理的表格很大 因此为了简洁起见 我将给出一个较小的示例来说明要点 采取下表 id A B C a 1 0 NULL b 1 1 NULL c
  • 如何刷新列表框的数据源

    表单有1个Combobox和1个ListBox 单击 添加 按钮时 我想将组合框中的所选项目添加到列表框中 public partial class MyForm Form List
  • 关闭电脑

    有没有办法使用内置的 Java 方法关闭计算机 创建您自己的函数以通过以下方式执行操作系统命令命令行 举个例子 但正如其他人指出的那样 知道您想要在何处以及为何使用它 public static void main String arg t
  • 如何在 Spring 控制器中检索 FORM/POST 参数?

    我有以下回应 应该来自邮件黑猩猩网络钩子 URL 这是行正文 RAW BODY type usub fired at 2015 07 23 17 3A19 3A34 data 5Baction 5D unsub data 5Breason
  • 禁用 PHPhotoLibrary 中删除请求的确认

    我想做的是将视频保存到 PHPhotoLibrary 然后在应用程序中上传到客户端远程服务器完成时删除它们 基本上 照片库充当临时存储 以添加额外的安全层 以防万一发生任何故障 我已经将我的视频保存在应用程序目录中 Problem 问题是要
  • 使用 Java 从 Github 下载二进制文件

    我正在尝试下载此文件 http github com downloads TheHolyWaffle ChampionHelper ChampionHelper 4 jar 用下面的方法 它似乎不起作用 我收到一个空 损坏的文件 Strin
  • 有没有办法使用curse在同一终端上创建单独的显示和输入?

    我想编写一个命令行程序来生成以下用户界面 A B A 是一个单独的进程 它循环并显示实时事件列表 它会自动刷新 B 是命令提示符 它固定在底部并有命令历史记录 我知道一些命令行 IRC 程序会执行此操作 因此它一定是可能的 如果您能给我一个
  • Stargazer 输出是代码,而不是表格

    我正在尝试使用 RStudio 中的 stargazer 包来生成数据汇总表 由于某种原因 当我使用 html 或 Latex 代码时 我无法查看输出中的表格 但当我输出为文本时 我可以看到它 一个例子 library stargazer
  • 类型错误:google.visualization.DataTable 不是构造函数

    在我的网页上有一个谷歌地图 以及三个图表 当页面加载时 地图很好 但图表要么不加载 要么只有一两个加载 不断收到错误 TypeError google visualization DataTable 不是构造函数 function load
  • 获取返回 StreamedContent 的 的具体 URL

    为了使用灯箱 我需要一个指向由以下命令生成的图像的链接
  • 如何在另一个 groovy 脚本中简单地导入 groovy 文件

    groovy tree lib GTemplate class GTemplate groovy Simple groovy class GTemplate static def toHtml this newInstance toHtml
  • Android 中的 Base64 图像转换导致图像损坏

    我需要将 JSON 上传到服务器 因此我尝试使用 base64 对其进行编码 然后通过 JSON 发送它 但在服务器端解码图像时 图像显示已损坏 我什至尝试过在线 Base64 到图像转换器 结果是相同的 这是我的活动代码 在从图库或相机中
  • 在 Scala 2.10 中通过反射查找类型参数?

    使用类型标签 我能够see某种类型的参数 scala gt import scala reflect runtime universe import scala reflect runtime universe scala gt typeO
  • 如何从 CMD 运行 Pip 命令

    据我了解 Python 2 7 9 附带安装了 Pip 但是当我尝试从 CMD Windows 执行 Pip 命令时 出现以下错误 pip is not recognized as an internal or external comma
  • 如何在Android Studio中指定JDK版本?

    Android Studio 给我一个 Gradle 构建错误 如下所示 Error 3 22 compileSdkVersion android 22 requires compiling with JDK 7 现在它给了我这些可点击的提
  • 如何正确处理Python中的循环模块依赖?

    尝试找到一种良好且正确的模式来处理 Python 中的循环模块依赖关系 通常 解决方案是删除它 通过重构 然而 在这种特殊情况下 我们确实希望拥有需要循环导入的功能 EDIT 根据下面的答案 此类问题通常的攻击角度是重构 然而 为了这个问题
  • Mac 上的 PDO MySQL 驱动程序

    我有一台大约一年前安装的自定义 PHP 5 的 Mac 我记得我花了整个星期天的时间 编译了大约 20 次才能把它做好 我拥有的 MySQL 来自熵并且是预编译的 现在我需要让 PDO 与 MySQL 驱动程序一起工作 但驱动程序尚未安装
  • 在c二进制中,测试数字是否在范围内

    这是我无法解开的谜题的一部分 该函数接受三个输入 第一个是 int 第二个是下界 第三个是上限 我需要测试第一个数字是否在下限和上限内 包括下限和上限 如果在范围内则返回1 否则返回0 问题是我只能使用 lt lt gt gt 操作 并且只