取消设置字中的最高有效位 (int32) [C]

2023-11-27

如何取消设置一个字的最高有效位(例如 0x00556844 -> 0x00156844)?有一个__builtin_clz在 gcc 中,但它只计算零,这对我来说是不需要的。另外,我应该如何替换 msvc 或 intel c 编译器的 __builtin_clz ?

目前我的代码是

 int msb = 1<< ((sizeof(int)*8)-__builtin_clz(input)-1);
 int result = input & ~msb;

更新:好的,如果你说这段代码相当快,我会问你,我应该如何为这段代码添加可移植性?这个版本是针对GCC的,但是MSVC & ICC呢?


只需向下舍入到最接近的 2 次方,然后将其与原始值进行异或,例如使用flp2() from 黑客的喜悦:

uint32_t flp2(uint32_t x) // round x down to nearest power of 2
{
    x = x | (x >> 1); 
    x = x | (x >> 2); 
    x = x | (x >> 4); 
    x = x | (x >> 8); 
    x = x | (x >>16); 
    return x - (x >> 1); 
}

uint32_t clr_msb(uint32_t x) // clear most significant set bit in x
{
    msb = flp2(x);  // get MS set bit in x
    return x ^ msb; // XOR MS set bit to clear it
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取消设置字中的最高有效位 (int32) [C] 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 抑制标准 ML 中的“val it”输出

    我正在用标准 ML SML NJ 编写一个 脚本 根据我的喜好设置交互式环境 该脚本所做的最后一件事是打印一条消息 表明一切顺利 本质上 最后一行是这样的 print SML is ready n 当我运行脚本时 一切顺利 但 SML 解释
  • 如何使用包含文件(例如 .css)的相对路径

    我有一个header php文件包含一个 css文件链接 当我 包含 时header php到不同文件夹中的另一个 php 文件中 css对此的 hrefheader php对于新的 php 文件来说不正确 我该如何申报href in my
  • 在 ReactJS 中更新数组中的对象的最佳方法是什么?

    如果您有一个数组作为状态的一部分 并且该数组包含对象 那么通过更改其中一个对象来更新状态的简单方法是什么 示例 根据react教程修改 var CommentBox React createClass getInitialState fun
  • var self = this; 是吗?一个糟糕的模式?

    我发现自己需要 var self this 我的 javascript 类 中有很多内容 虽然这种做法很常见 但感觉有点不对劲 我希望在这个问题中找到一种更好的方法来处理这个问题 或者让我相信这没什么问题 这是保持正确绑定的标准方法吗 我是
  • 在java中发送电子邮件时抛出javax.mail.AuthenticationFailedException

    我是java初学者 我想用java发送电子邮件 因为我在Java中使用这段代码 但我的代码抛出了异常 我需要注意为什么 这是异常的堆栈跟踪 javax mail AuthenticationFailedException 534 5 7 1
  • cakephp 一种表单,多个模型,不显示一个模型的验证消息

    我有一个注册表单 我正在用户和身份表中创建一条记录 用户有许多身份 表格看起来像这样 fieldset legend legend fieldset
  • Sql SMO:如何获取数据库物理文件名的路径?

    我正在尝试返回数据库的 mdf ldf 文件的物理文件路径 我尝试使用以下代码 Server srv new Server connection Database database new Database srv dbName strin
  • Chrome 渲染颜色的方式与 Safari 和 Firefox 不同

    由于某种原因 Chrome 将 FF3A00 渲染为 FF0000 我包含了来自的屏幕截图jsfiddle来说明这一点 色度计报告的颜色 以及我看到的颜色 与 CSS 所说的颜色不同 其他颜色也会发生这种情况 例如 FFAF00 根据色度计
  • 使用 Assembly.LoadFrom 和 Assembly.Load 混合加载程序集时的奇怪行为

    使用混合加载程序集时的奇怪行为Assembly LoadFrom and Assembly Load 我在加载程序集时遇到了奇怪的行为Assembly LoadFrom稍后与Assembly Load 我正在使用加载程序集Assembly
  • ASP.NET Web API 返回可查询的 DTO?

    我使用 ASP NET Web API 构建了一个不错的小 API 但我想从我的上下文 实体框架 AsQueryable 返回实体是不正确的 因此我将所有内容映射到 DTO 对象 然而我不太明白 如何保持上下文可查询 但仍然只返回 DTO
  • “计算附加信息”是什么意思?

    Eclipse Helios 定期开始运行显示 计算附加信息 的作业 这段时间 Eclipse 非常迟缓 几乎无法使用 这份工作是做什么的 我可以把它关掉吗 我只是希望 JDT 团队中有人能够意识到并摆脱它 让它运行得更快 或者至少将其更改
  • 允许所有远程连接,MySQL

    我一直在使用 SQL Server 现在在一个项目中使用 MySQL 使用 SQL Server 如果我们的开发人员知道主机 用户名和密码 他们就可以连接到本地计算机上的远程数据库 不过 对于 MySQL 为了让开发人员能够从本地计算机进行
  • 在类构造函数中包含参数是否可以接受?

    我正在编写一个 ruby gem 它对于计算文本中单词的出现次数很有用 我选择在类构造函数中放置 3 个参数 代码可以工作 但我想重构它以使其美观 根据您的经验 作为 API 读取 维护 使用一个带有没有参数的构造函数和大量 setter
  • OpenCV:FFMPEG:编解码器不支持标签 0x34363268/'h264'

    像在 Mac OS 10 13 6 上一样安装 opencv 后 conda install c conda forge ffmpeg conda install c conda forge opencv 并使用fourcc cv2 Vid
  • OCaml 类型推断算法如何工作?

    我目前正在学习 OCaml 我很好奇 OCaml 如何进行类型推断 我知道这是通过一个称为统一的过程完成的 我尝试阅读已发表论文中的算法 但符号让我失望 谁能为我描述一下分步过程 实际上 可以说统一是算法的实现细节 类型系统只是一组规则 这
  • 使用 ng-click 在 angularJs 中添加和删除类

    我正在尝试如何使用 ng Click 添加课程 我已经将我的代码上传到plunker中点击这里 查看角度文档 我无法弄清楚应该完成的确切方法 下面是我的代码片段 有人可以引导我走向正确的方向吗 div class block div 控制器
  • 将矩导入 Angular 会出现错误

    我收到以下错误 Module node modules moment moment has no exported member default 当我使用 import as moment from moment import defaul
  • 如何在 SQLAlchemy 中加载 SQLite3 扩展?

    我构建了一个 SQLite 扩展 即 so 库 我想使用 SQLAlchemy 在我的应用程序中使用它 它是一个 Flask 应用程序 但我不认为 Flask 在这里发挥作用 该扩展可以从 CLI 加载并且似乎可以工作 sqlite3 SQ
  • P0522R0如何破码?

    今天我正在阅读 clang 的 C 17 支持页面 我注意到一些奇怪的事情 特点将模板模板参数与兼容的参数相匹配 P0522R0 被标记为部分 因为它必须通过开关激活 他们的笔记says 尽管是缺陷报告的解决方案 但该功能在所有语言版本中默
  • 取消设置字中的最高有效位 (int32) [C]

    如何取消设置一个字的最高有效位 例如 0x00556844 gt 0x00156844 有一个 builtin clz在 gcc 中 但它只计算零 这对我来说是不需要的 另外 我应该如何替换 msvc 或 intel c 编译器的 buil