除法和乘法 2 的幂

2024-05-17

我在一篇论文中读到,数字除以 2 的幂并乘以 2 的幂是一个微不足道的过程。 我在互联网上搜索了很多解释,但没有得到它。 任何人都可以用简单的语言解释一下这实际上意味着什么。


从位操作的角度来看,这是微不足道的。乘以2相当于左移1位,除法相当于右移。类似地,乘以或除以 2 的任意次方也是同样简单的事情。

int a = 123;           // or in binary format: a = 0b01111011;

assert (a * 2) == (a << 1);   // 2 = 2^1, (a << 1) = 11110110
assert (a / 2) == (a >> 1);   // 2 = 2^1, (a >> 1) = 00111101

assert (a * 8) == (a << 3);   // 8 = 2^3, (a << 3) = 1111011000
assert (a / 8) == (a >> 3);   // 8 = 2^3, (a >> 3) = 0000001111

另请注意a*2 = a+a,并且有时加法甚至比移位更便宜,具体取决于硬件。

对于有符号除法,请注意在某些语言(例如 C)中,整数除法会向零截断,而算术右移(在 2 的补码的符号位副本中移位)始终向 -Infinity 舍入。例如(-5)/2 == -2, but (-5) >> 1 == -3。实现有符号除以 2 仍然可以通过移位 + 额外操作来添加符号位以获得截断行为。 (查看 C 编译器输出。)

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

除法和乘法 2 的幂 的相关文章

  • 替代位置基础系统(十六进制、八进制、二进制)如何工作?如何将它们转换为十进制?

    我以前在编程课上没有学过这一点 但现在我需要知道它 有哪些学习这些数字以及如何转换它们的好资源 我几乎会像记住乘法表一样记住这些 在我们日常的十进制系统中 基数或radix http en wikipedia org wiki Radix
  • 如何用php将文件内容转换为字节数组

    我想用PHP将上传的文件保存 插入 到数据库中 数据库字段的类型是varbinary 最后 我想要获得 VarBinary 输出 的内容 就像在 C 中读取文件然后将其存储在字节数组中并将数组插入到 VarBinary 中一样 我与数据库的
  • 是否存在 UTF-8 编码中未使用的字节?

    据我了解 UTF 8 是 ASCII 的超集 因此包括不用于表示可打印字符的控制字符 我的问题是 是否有任何字节 256 个不同的字节 未被 UTF 8 编码使用 我想知道你是否可以转换 编码UTF 8 文本转二进制 这是我的思考过程 我不
  • Ruby - 乘法问题

    我的输出是这样的 ruby 1 9 2 p290 011 gt 2 32 3 gt 6 959999999999999 我记得有一天在另一台机器上我得到了它就像 2 32 3 6 我的错误是什么 非常感谢您阅读本文 如果您确实想向下舍入为整
  • 如何从 wfstream 读取二进制数据?

    我从文件读取数据时遇到一个小问题 我希望能够读取 wstring 以及任意大小的原始数据块 大小以字节为单位 std wfstream stream file c str std wstring comType stream gt gt c
  • 二进制增量存储

    我正在寻找一种二进制增量存储解决方案来版本化大型二进制文件 数字音频工作站文件 使用 DAW 文件时 与用于存储原始数据 波形 的大量数据相比 大多数更改 尤其是在混音结束时 都非常小 如果我们的 DAW 文件有一个版本控制系统 让我们可以
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 反转二进制网络

    如何反转二元方程 以便找到哪些输入将产生给定的输出 Example Inputs i0 through i8 Outputs o0 through o8 Operators XOR AND 二元方程 1 i0 1 i1 0 i2 1 i3
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 如何看待Python的负数按位运算?

    我发现很难思考 Python 和 Python3 的无限精度负数和按位运算 它不是 32 位或 64 位 这1左边的 s 可以被认为是 无穷多个 它不是很明确 这就是为什么有时很难思考它是如何运作的 似乎一种可行的方法是 总是让它更多 例如
  • 可以重复应用并产生相同结果的数据库操作吗?

    我现在一片空白 或者像有些人说的那样 正在经历一个高级时刻 我知道这个概念有一个正式的定义和名称 其中在数据库中运行的数据库操作 存储过程 如果重复运行将产生相同的结果 它属于数学家的自反 对称 传递等类型 您的意思是 确定性 吗 如果使用
  • 以 O(1) 计算汉明权重 [重复]

    这个问题在这里已经有答案了 在二进制表示中 汉明权重是 1 的数量 我偶然发现了网络并找到了一个 O 1 的答案 v v v gt gt 1 0x55555555 v v 0x33333333 v gt gt 2 0x33333333 in
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • 使用位操作查找字符串中的重复项时出现问题

    我认为 我已经实现了正确的逻辑来查找字符串是否包含重复项 但即使在终端中没有打印任何内容 我也无法理解为什么会这样 那么我在这个程序中犯了哪些错误 任何人都可以解释为什么它不起作用 include
  • 将十进制转换为十六进制

    首先 这是家庭作业 我正在尝试将 5 位数字读入寄存器 bx 假定该数字不大于 65535 16 位 以下是我尝试这样做的方法 但是 当我尝试打印该号码时 我仅打印输入的最后一位数字 这让我猜测 当我向 bx 添加另一个数字时 它会覆盖以前
  • 找到将一个数字转换为另一个数字的最小移动次数的算法

    假设我们有两个正整数 a 和 b 每次移动我们都可以将 a 除以 2 但前提是 a 是偶数 将 a 乘以 2 或者将 a 加 1 将a变为b需要多少步 找到一个直接公式或一种有效的算法 即以对数时间运行的算法 我取得的一些进展 我们可以把它
  • 为什么 b = (b - x) & x 会得到下一个子集?

    The 有竞争力的程序员手册 https cses fi book book pdf第 99 页建议使用以下方法来遍历集合的所有子集x 集合位代表集合中的数字 int b 0 do Process subset b while b b x
  • 如何在bash中进行二进制加法

    我正在尝试将两个 32 位二进制数相加 其中之一是常数 address range in binary 另一个是数组的元素 IPinEachSubnet val 我正在尝试按照说明进行操作here https www linuxquesti

随机推荐

  • Angular 2 - Http - 正确忽略空结果

    我有很多处理请求并简单返回 200 的 REST 端点 我注意到将结果映射为错误json 如果我尝试不进行任何类型的映射 我会看到浏览器警告它无法解析 XML 由于不返回任何内容是很常见的 我很好奇我应该如何处理响应 这是一个基本的代码示例
  • wildfly-logstash 不将日志发送到logstash

    我正在使用 jboss keycloak 11 0 2 和 wildfly logstash https github com kifj wildfly logstash https github com kifj wildfly logs
  • 树莓派的设备树驱动内核

    我想用设备树驱动的 Linux 内核启动树莓派 有什么特别的事情要做吗 谁能指出为树莓派设置基于设备树的内核启动需要什么 我可能需要有树莓派内核源代码 其中设备驱动程序应与设备树兼容 如果是这样 我在哪里可以找到 Raspberry Pi
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • 如何在 IIS 10 上禁用 HTTP/2

    IIS 10 声称完全支持 HTTP 2 我想知道是否有办法在 IIS 10 上关闭 HTTP 2 要在 Windows 10 HTTP SYS 上禁用 HTTP 2 请在 Windows 10 桌面上的 HKEY LOCAL MACHIN
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • string.Compare 行为

    怎么会这样呢 这是从VS2008中的立即窗口获取的 string Compare 1 string Compare 0 0 1 从言论来看字符串比较 http msdn microsoft com en us library 84787k2
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 元素和 svg 形状之间的白线

    大家好 我正在使用由 shapedivider 生成的 svg 整形器 您可以看到 有一条白线 我不知道为什么它在那里以及如何删除它 请你帮助我好吗 有形状分隔符的代码 custom shape divider bottom 1640714
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会
  • 导入错误:无法导入名称“时间戳”

    我使用以下代码在 python 3 6 3 中成功安装了 ggplot conda install c conda forge ggplot 但是当我使用下面的代码将其导入笔记本时 出现错误 from ggplot import Impor
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • Boost Spirit X3 量产准备好了吗?

    我正在将手写解析器迁移到 Boost Spirit 2 5 4 第一印象是积极的 但由于我使用的是 C 17 X3 似乎是一个非常有吸引力的选择 幸运的是 有很多关于 X3 的资源 many Stackoverflow 上有关 X3 的问题
  • IE 中的每个 JavaScript 支持?

    我有这个代码
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • BigQuery 标准 SQL 错误,根本未触及日期字段时的时间戳无效

    答案here https stackoverflow com questions 41195883 bigquery standard sql error invalid timestamp对我没有帮助 尽管我在一个相当简单的更新查询中遇到
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 除法和乘法 2 的幂

    我在一篇论文中读到 数字除以 2 的幂并乘以 2 的幂是一个微不足道的过程 我在互联网上搜索了很多解释 但没有得到它 任何人都可以用简单的语言解释一下这实际上意味着什么 从位操作的角度来看 这是微不足道的 乘以2相当于左移1位 除法相当于右