K&R 中的位计数功能 [关闭]

2023-12-29

K&R的《C程序设计语言》一书中,有一个位计数函数:

int bitsCount(unsigned x)
{
    int b;
    for (b = 0; x != 0; x >>= 1)
        if (x & 01)
            b++;
    return b;
}

我的问题是他们为什么使用x&01但不是x & 1 or x & 00000001? 01不是八进制1的意思吗?


从语义上讲,你是对的,这并不重要。x & 01, x & 1, x & 0x1等都会做完全相同的事情(并且在每个正常的编译器中,生成完全相同的代码)。您在这里看到的是作者的约定,曾经相当标准(但从未具有普遍性),现在则少得多。在这种情况下使用八进制是为了清楚地表明正在发生按位运算;我敢打赌,作者也以八进制定义了标志常量(旨在按位或在一起)。这是因为,推理 010 和 017 比推理 8 和 15 容易得多,因为您可以一次考虑一位数字。今天,我发现使用十六进制更常见,原因完全相同(按位运算一次应用一位数字)。十六进制相对于八进制的优点是十六进制数字与字节很好地对齐,并且我希望在现代代码中看到大多数用十六进制常量编写的按位运算(尽管微不足道的常量x & 1而不是x & 0x1在这种情况下)。

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

K&R 中的位计数功能 [关闭] 的相关文章

  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • 在调用堆栈中看到大量 clr!CLR Semaphore::Wait

    我们看到很多像下面这样的调用堆栈 我可以知道什么条件 情况会发生这种情况吗 OS Thread Id 0x48654 559 Current frame ntdll NtWaitForSingleObject 0xa Child SP Re
  • C++:将模板参数的模板类型成员添加为好友的正确语法?

    我有一个带有模板类型参数 tTRAIT 的类 我想加一个模板为好友type member aliastTRAIT 但我无法弄清楚语法 这可能吗 template
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 函数参数评估顺序[重复]

    这个问题在这里已经有答案了 在 C 和 C 中 函数参数的求值是否有固定的顺序 我的意思是 标准怎么说 是吗left to right or right to left 我从书中得到的信息令人困惑 是否有必要function call应该使
  • 捕获另一个进程未处理的异常

    我想知道我是否可以捕获我开始使用 Process Start 的另一个进程抛出的未处理的异常 我知道我可以用这个捕获标准错误link http social msdn microsoft com Forums en US csharpgen
  • ASP.NET MVC 路由 - 向路由添加 .html 扩展名

    我对 MVC 和路由非常陌生 我被要求修改一个应用程序以使用不同的 url 由于我没有经验 这项任务对我来说有点困难 好吧 让我们谈谈一些代码 routes MapRoute CategoryBySeName Route name prod
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 使用宏计算源文件行数?

    是否可以使用 C C 预处理器将源文件中的行数计算为宏或某种编译时可用值 例如 我可以更换吗MAGIC1 MAGIC2 and MAGIC3在下面 并在使用时以某种方式获取值 4MAGIC3 MAGIC1 can be placed whe
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • 该组件没有由 uri 标识的资源

    我想创建一个通用数据网格以在我的所有视图 用户控件上使用 这是我的结构 Class Library called Core Class called ViewBase public class ViewBase UserControl pu
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • C# amo 获取角色完整

    我正在开发一个 SSAS 项目 其中除其他事项外 我需要获取 C 中表格多维数据集的完整用户列表 目前我让它以这样的方式工作 我可以获得角色 但数据不完整 当我调用 Server Database Roles 为了便于阅读而简化 属性并枚举
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include

随机推荐

  • 在 virtualenv 中安装 pysvn

    我可以使用二进制包在站点范围内安装 pysvn 例如 在 Ubuntu 中 sudo apt get install python svn 或者 在 Windows 上 我可以使用 exe 安装程序进行站点范围内的安装 在 virtuale
  • 检查 Laravel 中的验证是否失败

    我想知道使用这种代码编写验证何时失败 我正在使用拉拉维尔 5 4 https laravel com docs 5 4 this gt validate request name gt required min 2 max 255 我知道我
  • 联系人选择器显示号码、联系人姓名以及可能的联系人图像?

    有没有办法显示同时包含号码和联系人姓名的联系人选择器 现在我正在调用选择器 startActivityForResult new Intent Intent ACTION PICK Contacts Phones CONTENT URI 1
  • 使用异或的 GetHashCode() 问题

    我的理解是 您通常应该将 xor 与 GetHashCode 一起使用来生成 int 以通过其值 而不是通过其引用 来识别数据 这是一个简单的例子 class Foo int m a int m b public int A get ret
  • OpenCV 在函数内更改 Mat(Mat 范围)

    我将 Mat 传递给另一个函数并在被调用函数内更改它 我原以为作为一个更复杂的类型 它会自动通过引用传递 以便矩阵在调用函数中发生变化 但事实并非如此 有人可以向我指出如何从函数正确返回更改后的 Mat 的解释吗 这是代码片段 void c
  • 已弃用的 CLRegion 方法 - 如何获取半径?

    我正在使用geocodeAddressString completionHandler 方法 它返回 CLPlacemarks 数组 我必须获取纬度 经度 助记名和半径 虽然获得前 3 个很容易 double lat placemark l
  • OpenFire Server 中用户的 JID 应该是什么?

    您好 我对此很陌生 我已经设置了一个 Openfire 服务器并使用 Spark IM 来测试它 但对于 Android 应用程序代码 会话中用户的 JID 应该是 我尝试过 username ip address username ip
  • 在 Windows Phone 7 上将数据保存到独立存储的最佳方式是什么?

    我想将对象持久化到独立存储中 到目前为止我可以想到这些方法 保存时将它们序列化为 xml 文件 然后在保存时将它们序列化回来 使用对象数据库 对好的或推荐的怀疑比比皆是 例子是Perst http wmpoweruser com fully
  • 如何验证 okhttp 是否使用 http/2 进行请求?

    如何验证 okhttp 是否成功协商 http 2 并且没有使用 https 1 1 我可以检查回复中的一些信息吗 谢谢 托尼 仅供参考 从 okhttp 3 0 左右开始OkHttp Selected Protocol未打印 不过 可以在
  • 从服务 android 更新我的活动中的列表视图

    我有两节课 1 活动课 2 服务等级 当服务有任何更新时 我需要更新活动中的列表视图 实际上我尝试像聊天应用程序一样 我的服务总是检查我的数据库 如果它有任何新字符串 我需要在我的活动中更新而无需再次重建 只需刷新列表视图 我发现它将使用
  • 悬停时的原型 Element.toggle,禁用子元素

    我遇到以下情况 我有一个这样的表结构 tr td text td td text td td text td td a href img src a td td span style display hidden a href e a a
  • VRML 发生了什么?

    早在 20 世纪 90 年代末 当我在读研究生时 VRML 即将占领世界 我和我的同事通过将其连接到 Java 和 Javascript 代码 用它构建了各种有用且有趣的东西 当然 当时的计算机比现在慢很多倍 多核 CPU 很大程度上是科幻
  • 使用 CreateProcessWithLogonW 进行作业控制

    我正在编写的应用程序需要在主机系统上执行潜在的恶意代码 该代码仅与stdin stdout and stderr 并且不应尝试与文件系统或网络交互 我通过防火墙规则限制了网络访问 并通过以非特权用户身份运行该进程来限制文件系统访问NetUs
  • 子类中的 __slots__ 继承实际上是如何工作的?

    In the 关于槽的 Python 数据模型参考部分 http docs python org reference datamodel html slots有一个关于使用的注释列表 slots 我对第 1 条和第 6 条感到非常困惑 因为
  • VSS 到 Clearcase 的过渡,附加注释

    有没有办法执行 Clearcase 签入 其中签入注释直接附加到源文件中 这就像 VSS 所做的那样 请不要争论这是好事还是坏事 我在这里对这些事情的影响力为零 我需要将签入数据包括日期 用户和注释 通过 Clearcase 附加到文件末尾
  • 在 Window Phone 8.1 中从服务器收到原始推送通知后执行某些功能

    即使应用程序未运行 我也想在收到推送通知时执行我自己的函数 并且用户不需要单击操作栏中的通知 In the BackgroundTask cs我有以下代码片段 namespace BackgroundTasks public sealed
  • 地理位置成功回调 - 如何在此回调之外处理返回的对象?

    网络上大多数简单的 html5 地理定位示例都是这样的 if navigator geolocation navigator geolocation getCurrentPosition success error else no geol
  • iOS - watchOS 应用程序发布问题 CFBundleIdentifier 冲突

    应用程序上传后 我收到以下电子邮件 我们发现您的应用程序最近交付存在一个或多个问题 XXX 请更正以下问题 然后重新上传 ITMS 90806 CFBundleIdentifier 冲突 每个捆绑包必须有一个 唯一的包标识符 包标识符 捆绑
  • 如果容器隐藏,jQuery.validate 无效

    我有几个输入分成不同的容器 面板 我遇到的问题是 如果这些面板之一被隐藏 style display none jQuery validate 插件不会验证这些输入 我用一个小例子进行了测试 出现了同样的问题 view using Html
  • K&R 中的位计数功能 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 K R的 C程序设计语言 一书中 有一个位计数函数 int bitsCount unsigned x int b for b 0 x 0 x g