这就是 C 中 + 运算符的实现方式吗?

2024-04-11

当理解原始运算符如+, -, * and /是用C实现的,我发现了以下片段一个有趣的答案 https://stackoverflow.com/a/11694778/5399734.

// replaces the + operator
int add(int x, int y) {
    while(x) {
        int t = (x & y) <<1;
        y ^= x;
        x = t;
    }
    return y;
}

看来这个函数演示了如何+实际上在后台工作。然而,这对我来说太混乱了,无法理解。我相信很长时间以来这样的操作都是使用编译器生成的汇编指令来完成的!

Is the +运算符按照发布的代码实现MOST实施?这是否利用了二进制补码或其他依赖于实现的功能?


迂腐一点,C 规范没有指定how添加已实施。

但实事求是地说,+小于或等于 CPU 字长的整数类型上的运算符将直接转换为 CPU 的加法指令,而较大的整数类型将转换为多个加法指令,并带有一些额外的位来处理溢出。

CPU 内部使用逻辑电路来实现加法,并且不使用循环、移位或任何与 C 工作方式非常相似的东西。

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

这就是 C 中 + 运算符的实现方式吗? 的相关文章

  • 为什么 PCRE 正则表达式比 C++11 正则表达式快得多

    一些示例代码 这是使用 cregex iterator 的 c 11 部分 std chrono steady clock time point begin0 std chrono steady clock now regex re
  • IssuerSigningKeyResolver 调用异步方法

    我们使用 IssuerSigningKeyResolver 它是 Microsoft IdentityModel Tokens 的一部分 用于令牌验证并接受非异步委托 我们调用一个异步方法 这将导致阻塞调用 因此想知道使用它的正确方法是什么
  • for 和 while 循环中没有循环条件

    while cond fine for cond fine 但是当我删除条件部分时 while syntax compilation error for Infinite loop 这些循环内部是如何实现的 或者 编译器 解析器 如何知道中
  • 如何使用 PowerShell 使用 C# DLL 中存在的类的 New-Object

    例如 我有一个 C 类 public class MyComputer PSObject public string UserName get return userName set userName value private strin
  • C 中经过的时间

    include
  • 在 C 中使用另一个结构中的二维结构数组的编码问题

    我正在使用一个二维结构数组 它是另一个结构的一部分 这不是我做过很多事的事情 所以我遇到了问题 该函数在接近末尾的 测试 for 循环后最终失败 它在出现段错误之前正确打印出一行 我的代码中将数据读入虚拟二维结构数组的部分工作得很好 所以它
  • 如何检测机器是否加入域?

    如何检测计算机是否已加入 Active Directory 域 相对于工作组模式 如果没有必要的话 不要用 pinvoke 来愚弄 参考System DirectoryServices 然后调用 System DirectoryServic
  • 弹出窗口或弹出窗口显示附加信息

    我想在我的应用程序顶部显示带有附加信息的弹出窗口 我的信息是Listview大约 500 个项目我都尝试过 有问题flyout gt 它里面可能有scrollViewer 所以我的列表视图不能正确虚拟化 其他一切都可以 有我的代码 Flyo
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • 让 AutoMapper 自动映射前缀属性

    我希望 AutoMapper 自动映射成员 如下所示 class Model public int ModelId get set class ModelDto public int Id get set 在这里 我会做一个 CreateM
  • 如何使用 Xamarin 应用程序开发自动注销

    我必须在 App xaml cs 上添加功能才能使其正常工作 我在 OnStart 上添加了功能 但现在它会间歇性地一次又一次地将我从应用程序中注销 根据下面的代码 我需要做什么才能让它停止这样做 或者我的代码有问题 这是我最新的代码 na
  • 将 KeyUp 作为参数传递 WPF 命令绑定文本框

    我有一个文本框 KeyUp 事件触发器连接到 WPF 中的命令 我需要将按下的实际键作为命令参数传递 该命令执行得很好 但处理它的代码需要知道按下的实际键 记住这可能是一个回车键或不仅仅是一个字母的任何键 所以我无法从 TextBox te
  • 提取 zip 文件时 Parallel.ForEach 抛出异常

    我正在阅读 zip 文件的内容并尝试提取它们 var allZipEntries ZipFile Open zipFileFullPath ZipArchiveMode Read Entries 现在 如果我提取使用 Foreach 循环
  • 模板是如何实例化的?

    这是一个练习 来自C 入门第五版 练习 16 27 对于每个带标签的语句 解释什么 如果有 实例化发生 如果实例化了模板 请解释原因 如果 不 请解释为什么不 第677页 template
  • 在源代码和预编译二进制文件之间切换

    我们的应用程序中有大量的库 库是用 C 或 C 编写的 平台 net Framework Windows 64 位 将所有内容编译为源代码需要花费大量时间 我们正在考虑切换到预构建的二进制文件 但我们仍然希望保留返回源代码的可能性 作为版本
  • 使用 JSON.NET 反序列化一些 JSON

    我对 JSON 非常陌生 我需要解析 API 提供的一些内容 谷歌快速搜索出现了JSON NET http james newtonking com pages json net aspx 所以我现在尝试使用它将此 JSON 解析为列表对象
  • 类型 '' 未映射

    我已经尝试修复这个错误有一段时间了 每当我的应用程序尝试创建数据上下文的实例时 我都会收到此错误 下面是代码 using System using System Collections Generic using System Linq u
  • scanf() 不等待用户输入[重复]

    这个问题在这里已经有答案了 我正在使用 c 中的双向链表来制作树 我在该函数中使用递归调用 但不知何故它不起作用 我的代码是 struct node int data struct node right struct node left s
  • 如何包装实体框架以在执行前拦截 LINQ 表达式?

    我想在执行之前重写 LINQ 表达式的某些部分 我在将重写器注入正确的位置时遇到问题 实际上根本没有 查看实体框架源代码 在反射器中 它最终归结为IQueryProvider Execute在 EF 中 它通过以下方式耦合到表达式Objec
  • 提高批量请求的野兽内存使用率

    我运行这个boost beast 客户端 异步 ssl http www boost org doc libs develop libs beast example http client async ssl http client asy

随机推荐

  • 实时工作流程的自定义工作流程活动中缺少跟踪日志

    我已经针对 CRM 2013 编写了一个自定义工作流活动 您不需要了解它的作用 我遇到的问题是 尽管实例化了ITracingService 我使用生成的任何跟踪内容Trace 方法在运行时被混淆仅适用于实时工作流程 换句话说 如果我异步运行
  • 如何从线性渐变中获取当前颜色?

    我有一个搜索栏 其值范围为 1 到 10 THUMB 停止在 1 2 3 4 5 10 如果 SeekBar 是线性渐变 则背景颜色 颜色从红色开始 然后是黄色 最后是绿色 如何获取拇指所在位置的当前颜色 pskink的建议 https s
  • OAuth 2 承载授权标头

    随着客户端 API 的更新 HTTPBasicAuthication 方法已替换为 OAuth2Bearer授权标头 使用旧的 API 我会执行以下操作 NSURLCredential credential NSURLCredential
  • 让 R 停止正在运行的 EC2 机器

    我有一些工作流程 我希望 R 在完成脚本后停止正在运行的 Linux 机器 我可以想到两种类似的方法来做到这一点 以 root 身份运行 R 然后调用system halt 从 root shell 脚本运行 R 可以以任何用户身份运行 R
  • 指数时间复杂度的真实示例

    我正在寻找一个直观的 现实世界的问题示例 该问题需要 最坏情况 指数时间复杂度来解决我正在做的演讲 以下是我提出的其他时间复杂度的示例 其中许多取自这个问题 https stackoverflow com questions 1592649
  • 检查表单是否已提交 - PHP

    检查表单是否已提交以确定是否应该将表单的变量传递给我的验证类的最佳方法是什么 首先我想也许 isset POST 但这总是会返回 true 因为超全局变量在任何地方都被定义 我不想使用以下方式迭代表单的每个元素 if isset POST
  • 如何重现错误“由于暂停纯视频背景媒体以节省电量,播放()请求被中断”?

    介绍 作为我项目的一部分 我有一个接收视频流的播放器 我希望它在流开始和结束时自动播放和自动停止 因此我引入了一个检查来查看流是否处于活动状态并在每种情况下启动和 或停止播放器 这是一个企业网站 有时有多达 3000 名用户同时观看视频流
  • PyTorch 教程错误训练分类器

    我刚刚开始 PyTorch 教程使用 PyTorch 进行深度学习 60 分钟闪电战我应该补充一点 我之前没有编写过任何 python 但其他语言 如 Java 现在 我的代码看起来像 import torch import torchvi
  • java 的地理图表

    谁能推荐一个 Java 组件 它可以让您创建一个漂亮的世界地图图像 突出显示某些国家 基于一些统计数据 与此图像类似的东西 类似于 Google 地理图表 但适用于 Java https developers google com char
  • Visual Studio Android ApkSigner 在密钥库中找不到密钥

    我在 Visual Studio 中创建 APK 时收到此错误 Failed to load signer signer 1 C googleplay keystore entry googleplay does not contain a
  • 使用pipenv,如何在pipfile中指定最低的python版本?

    Pipenv 有没有办法在 Pipfile 中指定 python 的最低版本 像这样的东西会起作用吗 requires python version gt python 3 5 No pipenv does not支持这一点 每Pipenv
  • xcode 接口生成器对象链接到检查器中的自定义类?

    在Xcode 最新版本 Interfacebuilder中 您可以将对象链接到代码 我创建了一个类 interface FileChangeController NSObject 但它没有在 Interface Builder Inspec
  • ios8 - 如何显示默认共享表

    我想展示并使用默认的 分享到其他服务 表 以便允许分享到 Twitter Facebook 电子邮件等 我不知道如何从我的应用程序中显示此视图 我该怎么做 您可以使用简单的活动控制器来显示默认共享应用程序 NSArray activityI
  • 使用 py2neo 在 neo4j 上查询写入性能

    目前 我正在努力寻找一种高性能的方法 使用 py2neo 运行多个查询 我的问题是 python 中有一大堆需要写入 neo4j 的写入查询 我现在尝试了多种方法来解决这个问题 对我来说最好的工作方法如下 from py2neo impor
  • 在 ninja/cmake 中操纵独立目标的构建顺序

    我正在开发一个使用 cmake ninja 构建的 C 项目 在 64 线程计算机上有大约 1200 个构建目标 有一个翻译单元需要 10 分钟来编译 大多数其他单元都相对较快 因此所有其他目标的构建一起只需要大约 9 分钟 在所有线程上构
  • 通过对具有匹配 id 编号的对象进行分组来重建 NSArray?

    我有一个 NSArray 数组中的每个对象都有一个 groupId 和一个名称 每个对象都是唯一的 但有许多对象具有相同的 groupId 有没有办法可以将数组分开并重建它 以便将名称分组到具有相应 groubId 的单个对象中 这是数组当
  • 获取密封特征的子类

    是否有可能 通过宏 某种形式的无形状自动魔法或其他形式 获得密封特征的子类列表 在编译时 在运行时 您不需要任何第三方库来执行此操作 sealed trait MyTrait case object SubClass1 extends My
  • 使用 C# 搜索 CSV 文件并提取旁边列中的值

    我正在尝试编写一个我正在编写的程序 Visual Studio 中的 C 在外部 CSV 文件中查找值 并将下一列中的值拉回到我的 WinForm 中的标签中 我的 CSV 文件是使用虚拟数据进行的测试 如下 gt old newuser
  • 如何获取 pexpect 日志文件中的时间戳

    我在用pexpect处理我的 telnet 和 ssh 通信 我还将所有请求 响应写入logfile using pexpect logfile filename 我想拥有时间戳也在日志文件中 我在文档中找不到它 有谁知道如何实现此功能 l
  • 这就是 C 中 + 运算符的实现方式吗?

    当理解原始运算符如 and 是用C实现的 我发现了以下片段一个有趣的答案 https stackoverflow com a 11694778 5399734 replaces the operator int add int x int